Matlab程序设计教程第二版课后参考答案.docx
《Matlab程序设计教程第二版课后参考答案.docx》由会员分享,可在线阅读,更多相关《Matlab程序设计教程第二版课后参考答案.docx(17页珍藏版)》请在冰豆网上搜索。
Matlab程序设计教程第二版课后参考答案
Matlab程序设计教程(第二版)课后参考答案
第一章
实验
1.实验一第1题
2.自己验证总结Matlab的主要优点
3.实验一第2题
4.实验一第3题
5.网站
思考练习
1.启动见书P5退出见书P6
2.Matlab主要功能见书P24种功能
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.0002i0.0048-0.0034i
1.58992.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=
-29618
20512
-885
[V,D]=eig(A)
V=
0.71300.28030.2733
-0.6084-0.78670.8725
0.34870.55010.4050
D=
-25.316900
0-10.51820
0016.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=0100000
isinf(A)
ans=0011000
isfinite(A)
ans=1000111
7.结构矩阵建立P46
结构矩阵名.成员名=表达式
单元矩阵建立P47
矩阵元素用大括号括起来。
8.用稀疏存储方式可以可以节省内存空间;运算规则上,稀疏矩阵与普通矩阵一样,只是矩阵的存储方式不同。
在运算过程中,稀疏存储矩阵可以直接参与运算。
当参与运算的对象不全是稀疏存储矩阵时,所得结果一般是完全存储形式。
第三章
实验
1.提示:
先根据输入的3位整数分别求个、十、百位上的数字a、b、c,反向输出整数:
100*a+10*b+c
2
(1)
m=input('请输入一个百分制的成绩:
');
ifm>=0&m<=100
switchfix(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
fori=1:
20
ifa(i)>b
b=a(i);
end
ifa(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)
fori=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
fori=1:
n
A=1/n/n+A;
end
(2)
A=1;
n=10000;
fori=1:
n
A=(2*n*n*2)/((2*n-1)*(2*n+1))*A;
end
6
A=rand(5,6)
n=input(‘输入某行行数’);
ifn>5
n=5
A(5,:
)
else
A(n,:
)
end
7
f1.m代码如下:
functionm=f1(n)
m=n+10*log(n^2+5);
f2.m代码如下:
functionm=f2(n)
m=0;
fori=1:
n
m=m+i*(i+1);
end
然后在命令文件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
函数文件factor1.m代码如下:
functionf=factor1(k)
ifk==1
f=1;
else
f=factor1(k-1)+k;
end
函数文件factor2.m代码如下:
functionf=factor2(k)
ifk==1
f=1;
else
f=factor2(k-1)+^2;
end
函数文件factor3.m代码如下:
functionf=factor3(k)
ifk==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
fori=1:
20
A(i)=fix((99-10+1)*rand
(1)+10);
B=A(i)+B;
end
B=B/20
fori=1:
20
ifA(i)
A(i)
end
end
4
(1)
A=1
fori=2:
100
A=(-1)^(i+1)*1/(2*n-1)+A;
end
A
(2)
A=0
fori=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=[123;456;789]
b=[-101;1-10;011]
[m,n]=chengji(a,b);
disp('a.*b=');
disp(m);
disp('a*b=');
disp(n);
6自己独立完成
第四章
实验
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轴');
axisequal
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);shadinginterp;
思考练习
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);
holdon
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)
第五章
实验
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=0
fori=1:
30000
a(i)=rand
(1);
ifa(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