MATLAB作业1参考答案(2018)

  • 格式:doc
  • 大小:68.00 KB
  • 文档页数:4

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、 试求出如下极限。

222222001cos()lim ()x y x y x y x y e +→→-++
【求解】极限问题可以由下面语句直接求解。

>> fc=(1-cos(x^2+y^2))*exp(x^2+y^2)/(x^2+y^2);
limit(limit(fc,x,0),y,0)
ans =
4、 试求出下面函数的导数。

22atan ln()y x y 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、 假设2
0(,)xy
t f x y e dt -=⎰,试求222222x f f f y x x y y ∂∂∂-+∂∂∂∂。

【求解】由下面的命令可以得出所需结果。

>> 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、 假设5()sin(3/3)x f x e x π-=+,试求出积分函数0()()()t R t f x f t x dx =+⎰。

【求解】定义了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 幂级数展开。

5sin(3/3)x e x π-+分别关于0x =、x a =的幂级数展开。

【求解】 该函数的前4 项展开
>> syms x a; f=exp(-5*x)*sin(3*x+sym(pi)/3);taylor(f,x,4,a)
8、试求出下面的极限。

22221111lim ()23n n n n n n n ππππ
→∞++++++++。

【求解】 可以由下面的语句直接求解。

>> syms k n
limit(n*symsum(1/(n^2+k*pi),k,1,n),n,inf)
【求解】可以由下面的语句得出函数的各阶导数,得出的曲线。

>> 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. 计算被积函数ln()x y e 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、.求函数(,,)sin cos f x y z y x z 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。