当前位置:首页 >> 远程、网络教育 >>

MATLAB作业1参考答案(2018)

MATLAB 作业 1 参考答案
1 、编写一个矩阵相加函数mat_add() ,使其具体的调用格式为 A=mat_add(A1 ,A2 ,A3 ,…) , 要求该函数能接受任意多个矩阵进行加法运算。(注: varargin 变量的应用) 【求解】可以编写下面的函数,用varargin 变量来表示可变输入变量 function A=mat_add(varargin) A=0; for i=1:length(varargin), A=A+varargin{i}; end 如果想得到合适的错误显示,则可以试用try, catch 结构。 function A=mat_add(varargin) try A=0; for i=1:length(varargin), A=A+varargin{i}; end catch, error(lasterr); end

2、 请绘制出 sin( xy ) 的三维图和等高线。 【求解】给出下面命令即可得出的图形。 >> [x,y]=meshgrid(-pi:.1:pi); surf(x,y,sin(x.*y)), figure; contour(x,y,sin(x.*y),30)

3、 试求出如下极限。 lim
x ?0 y ?0

1 ? cos( x 2 ? y 2 ) ( x 2 ? y 2 )e x
2

? y2

【求解】极限问题可以由下面语句直接求解。 >> fc=(1-cos(x^2+y^2))*exp(x^2+y^2)/(x^2+y^2); limit(limit(fc,x,0),y,0)

ans = 0

4、 试求出下面函数的导数。 atan

y ? ln( x 2 ? y 2 ) x

【求解】为隐函数,故需要用隐函数求导公式得出导数。 >> syms x,y; f=atan(y/x)-log(x^2+y^2); f1=simple(-diff(f,x)/diff(f,y)) f1 = (y+2*x)/(x-2*y)

5、 假设 f ( x, y) ?

?

xy

0

e?t dt ,试求

2

x ?2 f ?2 f ?2 f 。 ? 2 ? y ?x 2 ?x?y ?y 2

【求解】由下面的命令可以得出所需结果。 >> syms x y t f=int(exp(-t^2),t,0,x*y); x/y*diff(f,x,2)-2*diff(diff(f,x),y)+diff(f,y,2) simple(ans) ans = -2*exp(-x^2*y^2)*(-x^2*y^2+1+x^3*y)

6、 假设 f ( x) ? e

?5 x

sin(3x ? ? / 3) ,试求出积分函数 R(t ) ? ? f ( x) f (t ? x)dx 。
0

t

【求解】定义了x 的函数,则可以由subs() 函数定义出t +x 的函数,这样由下面的语句 可以直接得出R 函数。 >> syms x t; f=exp(-5*x)*sin(3*x+sym(pi)/3);

R=int(f*subs(f,x,t+x),x,0,t); simple(R) ans = 1/1360*(15*exp(t)^10*3^(1/2)*cos(3*t)-25*cos(9*t)+ 25*exp(t)^10*3^(1/2)*sin(3*t)-68*cos(3*t)-15*3^(1/2)*cos(9*t)25*3^(1/2)*sin(9*t)-15*exp(t)^10*sin(3*t)+15*sin(9*t)+ 93*exp(t)^10*cos(3*t))/exp(t)^15

7、试求出下面函数的 Taylor 幂级数展开。

e?5 x sin(3x ? ? / 3) 分别关于 x ? 0 、 x ? a 的幂级数展开。
【求解】 该函数的前4 项展开 >> syms x a; f=exp(-5*x)*sin(3*x+sym(pi)/3);taylor(f,x,4,a)

8、试求出下面的极限。 lim n(
n ??

1 1 1 ? 2 ? 2 ? n ? ? n ? 2? n ? 3?
2

?

1 )。 n ? n?
2

【求解】 可以由下面的语句直接求解。 >> syms k n limit(n*symsum(1/(n^2+k*pi),k,1,n),n,inf)
9、试对下面数值描述的函数求取各阶(<5)数值微分,并用梯形法求取定积分。

xi yi

0 0

0.1 2.208

0.2 3.206

0.3 3.444

0.4 3.241

0.5 2.816

0.6 2.311

0.7 1.81

0.8 1.36

0.9 0.982

1 0.679

1.1 0.447

1.2 0.277

【求解】可以由下面的语句得出函数的各阶导数,得出的曲线。 >> x=[0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1,1.1,1.2]; y=[0,2.208,3.206,3.444,3.241,2.816,2.311,1.81, 1.36,0.982,0.679,0.447,0.277]; [dy1,dx1]=diff_ctr(y,x(2)-x(1),1); [dy2,dx2]=diff_ctr(y,x(2)-x(1),2);

[dy3,dx3]=diff_ctr(y,x(2)-x(1),3); [dy4,dx4]=diff_ctr(y,x(2)-x(1),4); plot(dx1+x(1),dy1,'-',dx2+x(1),dy2,'- -',dx3+x(1),dy3,':',dx4+x(1),dy4,'-.') >> trapz(x,y) ans = 2.2643

10. 计算被积函数 y ? e x ln( x) 在[0,1)区间上的积分。 解:编写一个用于计算被积函数的函数 myfun:
function y = myfun(x) y = exp(x).*log(x);

然后将 myfun 的函数句柄 @myfun 以及 0 至 1 的积分范围一起传递到 quadgk。 q = quadgk(@myfun,0,1) q = -1.3179 另外,您也可以将被积函数作为匿名函数句柄 F 传递到 quadgk: f = (@(x)exp(x).*log(x)); >> q = quadgk(f,0,1) q= -1.3179 11、.求函数 f ( x, y, z ) ? y sin x ? z cos x 在区域 0≤x≤π 、0≤y≤1 和-1≤z≤1 的积分。 解:>> fun = @(x,y,z) y.*sin(x)+z.*cos(x); >> q = integral3(fun,0,pi,0,1,-1,1) q = 2.0000