Matlab程序设计教程(第二版)课后参考答案
第一章实验
1.实验一第1题
2.自己验证总结Matlab的主要优点
3.实验一第2题
4.实验一第3题
5.网站https://www.doczj.com/doc/b36662612.html, 思考练习 1. 启动见书P5 退出见书P6
2. Matlab主要功能见书P2 4种功能
3. 分行输入行末尾加续行符,即三个点“…”
4. 见书P11
5.
直接在命令窗口输入fac
第二章
实验
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.0002i 0.0048 - 0.0034i
1.5899
2.0090 - 1.3580i
2.实验二第1题
3.实验二第2题
4. H=hilb(5);
P=pascal(5);
Hh=det(H)
Hh = 3.7493e-012
Hp=det(P)
Hp = 1
Th=cond(H)
Th = 4.7661e+005
Tp=cond(P)
Tp = 8.5175e+003
条件数越趋近于1,矩阵的性能越好,所以帕斯卡矩阵性能更好。5. A=[-29,6,18;20,5,12;-8,8,5]
A =
-29 6 18
20 5 12
-8 8 5
[V,D]=eig(A)
V =
0.7130 0.2803 0.2733
-0.6084 -0.7867 0.8725
0.3487 0.5501 0.4050
D =
-25.3169 0 0
0 -10.5182 0
0 0 16.8351
V为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 = 0
any(A)
ans = 1
isnan(A)
ans = 0 1 0 0 0 0 0 isinf(A)
ans = 0 0 1 1 0 0 0 isfinite(A)
ans = 1 0 0 0 1 1 1 7.结构矩阵建立P46
结构矩阵名.成员名=表达式
单元矩阵建立 P47
矩阵元素用大括号括起来。
8.用稀疏存储方式可以可以节省内存空间; 运算规则上,稀疏矩阵与普通矩阵一样,只是矩阵的存储方式不同。在运算过程中,稀疏存储矩阵可以直接参与运算。当参与运算的对象不全是稀疏存储矩阵时,所得结果一般是完全存储形式。
第三章
实验
1.提示:先根据输入的3位整数分别求个、十、百位上的数字a、b、c,反向输出整数:100*a+10*b+c
2(1)
m=input('请输入一个百分制的成绩: ');
if m>=0&m<=100
switch fix(m/10)
case {9,10}
disp('这个成绩所属的成绩等级:A');
case {8}
disp('这个成绩所属的成绩等级:B');
case {7}
disp('这个成绩所属的成绩等级:C');
case {6}
disp('这个成绩所属的成绩等级:D');
otherwise
disp('这个成绩所属的成绩等级:E');
end
else
disp('错误:输入的成绩不合理');
end
3
a=[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=0
c=0
for i=1:20
if a(i)>b
b=a(i);
end
if a(i) c=a(i); end end b c 4 a=[-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) for i=1:61 y=(exp(0.3*a(i))-exp(-0.3*a(i)))/2*sin(a(i)+0.3)+log((0.3+ a(i))/2) end 5 (1) A=0; n=100 for i=1:n A=1/n/n+A; end (2) A=1; n=10000; for i=1:n A=(2*n*n*2)/((2*n-1)*(2*n+1))*A; end 6 A=rand(5,6) n=input('??ê?è?ò???n'); if n>5 n=5 A(n,n) else A(n) end 7 f1.m代码如下: function m=f1(n) m=n+10*log(n^2+5); f2.m 代码如下: function m=f2(n) m=0; for i=1:n m=m+i*(i+1); 然后在命令文件p3_11.m 中调用f1.m 和f2.m p3_11.m 代码如下: y1=f1(40)/(f1(30)+f1(20)); y2=f2(40)/(f2(30)+f2(20)); y1 y2 8 ∑ =100 1 k k 函数文件factor1.m 代码如下: function f=factor1(k) if k==1 f=1; else f=factor1(k-1)+k; end ∑=50 1 2^k k 函数文件factor2.m 代码如下: function f=factor2(k) if k==1 f=1; f=factor2(k-1)+^2; end ∑=10 1 /1k k 函数文件factor3.m 代码如下: function f=factor3(k) if k==1 f=1; else f=factor3(k-1)+1/k; end 思考练习 1.见课本3.1 2 N=[1,2,3,4,5] A=N.*2 B=N./4 C=1./N D=1./(N./2)./(N./2)/4 3 B=0 for i=1:20 A(i)=fix((99-10+1)*rand(1)+10); B=A(i)+B; end B=B/20 for i=1:20 if A(i) A(i) end end 4(1) A=1 for i=2:100 A=(-1)^(i+1)*1/(2*n-1)+A; end A (2) A=0 for i=1:1000 A=1/((4)^i)+A; end A 5 function [m,n]=chengji(A,B) m=A.*B; n=A*B; 然后在命令文件p3_12.m中调用chengji.m文件a=[1 2 3;4 5 6;7 8 9] b=[-1 0 1;1 -1 0;0 1 1] [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轴'); axis equal title('x^2+2y^2=64'); 2 t=-pi:0.1:pi; y=1./(1+exp(-t)); plot(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*pi y=5*cos(x)+4 polar(x,y) (2) x=-pi/3:.01:pi/3 a=sin(x) b=cos(x) y=a.*a.*5./b polar(x,y) 4 t=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);shading interp; 思考练习 1 务必自己看课本完成2(1) x=1:0.1:10 a=exp((x.^2)/2) y=a.*1/2/pi plot(x,y) (2) t=-pi:0.1:2*pi X=t.*sin(t) Y=t.*cos(t) plot(X,Y) 3 t=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); hold on k=find(abs(y2-y1)<1e-4); x1=x(k); y3=2*x1-0.5; plot(x1,y3,'rp') 4 x=-pi*6:0.1:pi*6 y=sin(1./x) plot(x,y) fplot('sin(1./x)',[-pi*6,pi*6],1e-4) 5(1) x=1:0.1:10 y=12./x polar(x,y) (2) x=-pi/6:0.1:pi/6 y=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) 第五章 实验 1 a=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') 思考练习 4 c=0 for i=1:30000 a(i)=rand(1); if a(i)>0.5 c=c+1; end end b=mean(a) b=std(a,0,2) b=max(a) b=min(a) c/30000 5 a=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