1Matlab程序设计教程(第二版)课后参考答案第二章实验1.(1)w=sqrt(2)*(1+0.34245*10^(-6))w=1.4142(2)a=3.5;b=5;c=-9.8;x=(2*pi*a+(b+c)/(pi+a*b*c)-exp(2))/(tan(b+c)+a)x=0.9829(3)a=3.32;b=-7.9;y=2*pi*a^2*((1-pi/4)*b-(0.8333-pi/4)*a)y=-128.4271(4)t=[2,1-3i;5,-0.65];z=0.5*exp(2*t)*log(t+sqrt(1+t*t))z=1.0e+004*0.0048+0.0002i0.0048-0.0034i1.58992.0090-1.3580i2.实验二第1题3.实验二第2题4.H=hilb(5);P=pascal(5);Hh=det(H)Hh=3.7493e-012Hp=det(P)Hp=1Th=cond(H)Th=4.7661e+005Tp=cond(P)Tp=8.5175e+003条件数越趋近于1,矩阵的性能越好,所以帕斯卡矩阵性能更好。5.A=[-29,6,18;20,5,12;-8,8,5]A=-2961820512-885[V,D]=eig(A)V=0.71300.28030.2733-0.6084-0.78670.87250.34870.55010.40502D=-25.3169000-10.518200016.8351V为A的特征向量,D为A的特征值。它们之间满足A*V=V*D思考练习1.在MATLAB中6+7i是一个复数常量,6+7*i则是一个表达式。i是虚数单位,而I是单位向量。2.A.*B表示A和B单个元素之间对应相乘,A*B是按矩阵乘法的规则乘。A./B表示A矩阵除以B矩阵的对应元素,B.\A等价于A./B。A/B表示A*inv(B)而B\A表示inv(B)*A,对于矩阵运算一般两式不等。3.(1)A(7)=[](2)abs(x)(3)reshape(x,3,4)(4)k=find(t==0);t(k)=0(5)ones(size(A))(6)diag(A)B=diag(diag(A))4.3+randn(25,20)5.实验二第3题6.A=[34,NaN,Inf,-Inf,-pi,eps,0];all(A)ans=0any(A)ans=1isnan(A)ans=0100000isinf(A)ans=0011000isfinite(A)ans=10001117.结构矩阵建立P46结构矩阵名.成员名=表达式单元矩阵建立P47矩阵元素用大括号括起来。8.用稀疏存储方式可以可以节省内存空间;运算规则上,稀疏矩阵与普通矩阵一样,只是矩阵的存储方式不同。在运算过程中,稀疏存储矩阵可以直接参与运算。当参与运算的对象不全是稀疏存储矩阵时,所得结果一般是完全存储形式。第三章实验1.提示:先根据输入的3位整数分别求个、十、百位上的数字a、b、c,反向输出整数:100*a+10*b+c2(1)3m=input('请输入一个百分制的成绩:');ifm=0&m=100switchfix(m/10)case{9,10}disp('这个成绩所属的成绩等级:A');case{8}disp('这个成绩所属的成绩等级:B');case{7}disp('这个成绩所属的成绩等级:C');case{6}disp('这个成绩所属的成绩等级:D');otherwisedisp('这个成绩所属的成绩等级:E');endelsedisp('错误:输入的成绩不合理');end3a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]b=max(a)c=min(a)b=0c=0fori=1:20ifa(i)bb=a(i);endifa(i)cc=a(i);endendbc4a=[-3:0.1:3];b=((exp(0.3.*a)-exp(-0.3.*a))./2)c=sin(a+0.3)y=b.*c+log((0.3+a)./2)fori=1:61y=(exp(0.3*a(i))-exp(-0.3*a(i)))/2*sin(a(i)+0.3)+log((0.3+a(i))/2)4end5(1)A=0;n=100fori=1:nA=1/n/n+A;end(2)A=1;n=10000;fori=1:nA=(2*n*n*2)/((2*n-1)*(2*n+1))*A;end6A=rand(5,6)n=input('ÇëÊäÈëÒ»¸ön');ifn5n=5A(n,n)elseA(n)end7f1.m代码如下:functionm=f1(n)m=n+10*log(n^2+5);f2.m代码如下:functionm=f2(n)m=0;fori=1:nm=m+i*(i+1);end然后在命令文件p3_11.m中调用f1.m和f2.mp3_11.m代码如下:y1=f1(40)/(f1(30)+f1(20));y2=f2(40)/(f2(30)+f2(20));y1y281001kk函数文件factor1.m代码如下:5functionf=factor1(k)ifk==1f=1;elsef=factor1(k-1)+k;end5012^kk函数文件factor2.m代码如下:functionf=factor2(k)ifk==1f=1;elsef=factor2(k-1)+^2;end101/1kk函数文件factor3.m代码如下:functionf=factor3(k)ifk==1f=1;elsef=factor3(k-1)+1/k;end思考练习1.见课本3.12N=[1,2,3,4,5]A=N.*2B=N./4C=1./ND=1./(N./2)./(N./2)/43B=0fori=1:20A(i)=fix((99-10+1)*rand(1)+10);B=A(i)+B;endB=B/20fori=1:20ifA(i)B&rem(A(i),2)==0A(i)6endend4(1)A=1fori=2:100A=(-1)^(i+1)*1/(2*n-1)+A;endA(2)A=0fori=1:1000A=1/((4)^i)+A;endA5function[m,n]=chengji(A,B)m=A.*B;n=A*B;然后在命令文件p3_12.m中调用chengji.m文件a=[123;456;789]b=[-101;1-10;011][m,n]=chengji(a,b);disp('a.*b=');disp(m);disp('a*b=');disp(n);第四章实验1(1)x=-12:0.001:12;y=x-x.^3/6;plot(x,y);xlabel('x轴');ylabel('y轴');title('Y=X-X^3/3!');(2)ezplot('x^2+2*y^2-64',[-8,8,-8,8])xlabel('x轴');ylabel('y轴');axisequaltitle('x^2+2y^2=64');2t=-pi:0.1:pi;y=1./(1+exp(-t));7plot(t,y);subplot(2,2,1)stairs(t,y)subplot(2,2,2)bar(t,y)subplot(2,2,3)stem(t,y)subplot(2,2,4)fill(t,y,'y')3(1)x=-2*pi:0.1:2*piy=5*cos(x)+4polar(x,y)(2)x=-pi/3:.01:pi/3a=sin(x)b=cos(x)y=a.*a.*5./bpolar(x,y)4t=0:pi/100:2*pi;x=exp(-t/20).*cos(t);y=exp(-t/20).*sin(t);z=t;plot3(x,y,z)(2)[x,y]=meshgrid(-5:5);z=ones(11);surf(x,y,z);shadinginterp;8思考练习1务必自己看课本完成2(1)x=1:0.1:10a=exp((x.^2)/2)y=a.*1/2/piplot(x,y)(2)t=-pi:0.1:2*piX=t.*sin(t)Y=t.*cos(t)plot(X,Y)3t=0:0.00005:pi;x=sin(3*t).*cos(t);y1=2*x-0.5;y2=sin(3*t).*sin(t);plot(x,y2,x,y1);holdonk=find(abs(y2-y1)1e-4);x1=x(k);y3=2*x1-0.5;plot(x1,y3,'rp')4x=-pi*6:0.1:pi*6y=sin(1./x)plot(x,y)fplot('sin(1./x)',[-pi*6,pi*6],1e-4)95(1)x=1:0.1:10y=12./xpolar(x,y)(2)x=-pi/6:0.1:pi/6y=3*sin(x).*cos(x)./(sin(x).^3+cos(x).^3)polar(x,y)6[u,v]=meshgrid(-pi:pi/100:pi);x=3*u.*sin(v);y=2*u.*cos(v);z=4*u.*u;mesh(x,y,z);(2)[x,y]=meshgrid(-3:6/100:3);z=-5./(1+x.*x+y.*y);mesh(x,y,z)10第五章实验1a=randn(10,5);b=mean(a)b=std(a,0,1)b=max(a);c=max(b,[],2)b=min(a);c=min(b,[],2)b=sum(a)c=sum(b,2)sort(a)sort(a,2,'descend')思考练习4c=0fori=1:30000a(i)=rand(1);ifa(i)0.5c=c+1;endendb=mean(a)b=std(a,0,2)b=max(a)b=min(a)c/300005a=fix((100-0+1)*rand(5,100));[b,c]=max(a,[],2)[b,c]=min(a,[],2)mean(a,2)std(a,0,2)[b,c]=sort(a,2,'descend')zcj=sum(a,1)xsxh=1:100