MATLAB程序实验参考答案doc.docx
《MATLAB程序实验参考答案doc.docx》由会员分享,可在线阅读,更多相关《MATLAB程序实验参考答案doc.docx(18页珍藏版)》请在冰豆网上搜索。
MATLAB程序实验参考答案doc
MATLAB程序设计与应用(第二版)实验参考答案
%实验一MATLAB运算基础
%第一题
%
(1)
z1=2*sin(85*pi/180)/(1+exp
(2))
%
(2)
x=[2,l+2i;・0.45,5];
z2=0.5*log(x+sqrt(1+x.A2))
%(3)
a=-3.0:
0.1:
3.0;
z3=(exp(0.3*a)-exp(-0.3*a))/2.*sin(a+0.3)+log((0.3+a)/2)
%(4)
t=0.05,25.
z4=t/2.*(t>=0&t=l&t<2)+(t.A2-2*t+l).*(t>=2&t<3)
%第二题
A=[1234-4;34787;3657];
B=[l3-l;203;3-27];
A+6*B
A-B+eye(size(A))
A*B“
A.*B
AA3
A.A3
A/B
B\A
[A,B]
[A([1,3],:
);BA2]
%第三题
A=[l2345;678910;ll12131415;1617181920;2122232425]
B=[3016;17-69;023-4;970;41311]
C=A*B
F=size(C)
D=C(F
(1).2:
F
(1),F
(2)-1:
F
(2))
whos
%第四题
%
(1):
A=100:
999;
B=rem(A,21);
C=length(find(B==O))
%
(2):
A='lsdhKSDLKklsdkl';
k=find(A>='A,&A<='Z');
A(k)=[]
%实验二MATLAB矩阵分析与处理
%第一题
E=eye(3);
R=rand(3,2);
O=zeros(2,3);
S=diag([2,3]);
A=[E,R;O,S];
AA2
B=[E,(R+R*S);O,S^2]
%第二题
H=hilb(5)
P=pascal(5)
Hh=det(H)
Hp=det(P)
Th=cond(H)
Tp=cond(P)
%第三题:
A=fix(10*rand(5))
H=det(A)
Trace=trace(A)
Rank=rank(A)
Norm=norm(A)
%第四题:
A=[・29,6,18;20,5,12;-8,8,5]
[V,D]=eig(A)
%数学意义略
%第味题方法一:
%
(1):
A=[l/2,l/3,l/4;l/3,l/4,l/5;l/4,l/5,l/6];
b=[0.95,0.67,0.52]*;
x=inv(A)*b
%⑵:
B=[0.95,0.67,0.53]';
x=inv(A)*B
%(3):
cond(A)
%第五题方法二:
A=hilb(4)
A(:
l)=[]
A(4,:
)=[]
B=[0.95,0.67,0.52]';
X=inv(A)*B
Bl=[0.95,0.67,0.53]';
Xl=inv(A)*Bl
N=cond(B)
Nl=cond(Bl)
Na=cond(A)%矩阵A为病态矩阵
%第六题
A=[l,4,9;16,25,36;49,64,81]
B=sqrtm(A)
C=sqrt(A)%sqrtm函数是以矩阵为单位进行计算,sqrt函数是以矩阵中的元素进行计算
%实验三选择程序结构设计
%第一题程序一
x=[・5.0,-3.0,1.0,2.0,2.5,3.0,5.0];
y=[];%建立存放所有y值的矩阵
forx0=x
ifx0<0&x0~-3
y=[y,x0*x0+x0-6];
elseifx6>=O&xOv5&x6〜=2&x0〜=3
y=[y,xO*xO-5*xO+6];
else
y=[y,x0*x0-x0-l];
end
end
X%输出所有X
y%输出所有y
%第一题程序二'
x=[-5,-3,l,2,2.5,3,5];
y=[];
fora=l:
7
ifx(a)v0&x(a)〜=・3
y=[y,(x(a))A2+x(a)-6];
elseifx(a)>=0&x(a)v5&x(a)〜=2&x(a)〜=3
y=[y,(x(a))A2-5*x(a)+6];
else
y=[y,x(a)*x(a)・x(a)-l];
end
end
%第二题程序一:
x=input("请输入一个百分制成绩:
,);
ifx>100|x<0
dispC您输入的成绩不是百分制成绩,请重新输入。
else
ifx<=100&x>=90
disp('A');
elseifx<=89&x>=80
disp('B');
elseifx<=79&x>=70
disp('C');
elseifx<=69&x>60
disp('D');
else
disp(E);
end
end
%第二题程序二:
s=input(请输入一个成绩(0分到100分之间):
,);%s用于存放成绩
while1%判断输入成绩的合理性
ifs<0|s>100
disp(输入的成绩需在0到100之间,请重新输入:
)
s=input(,请输大一•个成绩(0分到100分之I、旬):
*);
else
break;
end
end
switchfix(s/10)%对成绩做出等级判断
case{9,10}
disp(*A*)
case8
disp('B')
case7
disp('C')
case6
disp('D')
otherwise
disp('E')
end
%第三题
n=input(「清输入员工工号:
,);
h=inputf该员工工作时数是:
ifh>120
x=(h.120)*84*(l+0.15)+120*84;
elseifh<60
x=h*84-700;
else
x=h*84;
end
disp([num2str(n)/号员工7的应发工资为,,num2str(x)]);
%为囱题(还可以用switch语句实现)
a=fix(10+(99-10)*rand(l,2))%产生两个随机整数
x=a⑴;
y=a
(2);、、一
t=input(请输入运算符号:
ift=='+'
z=x+y;
elseift=='・'
z=x-y;
elseift==*
z=x*y;
elseift==7'
z=x/y;
end
disp([num2str(x),t,num2str(y),-',num2str(z)])%输出运算结果
%第五题
a=rand(5,6)%产生5x6的随机矩阵
n=input(请输入您要输出矩阵的第几行:
');
ifn>5
disp(超出了矩阵的行数,矩阵的最后一行为:
,)
a(5,:
)
else
disp([*矩阵的第0um2str(n),行为:
*])
a(n,:
)
end
%实验四循环结构程序设计
%第一题程序一
s=0;
n=input(^n=?
^);
fori=l:
n
s=s+l/i/i;
end
PI=sqrt(6*s)
Pi
%第一题程序二
n=input('n=?
');
a=l:
n;
b=l./a.A2;
PI=sqrt(6*sum(b))
Pi
%第二题
y=o;
n=l;
while(y<3)
y=y+l/(2*n-l);
n=n+l;
end
y=y-l/(2*(n-l)-l)
n=n-2
%昆三题
a=input('a=?
');
b=input(^b=?
^);
Xn=l;
Xnl=a/(b+Xn);
n=0;
whileabs(Xn1-Xn)>1e-5
Xn=Xnl;
Xnl=a/(b+Xn);
n=n+l;
ifn==500
break;
end
end
n
Xnl
rl=(-b+sqrt(b*b+4*a))/2
r2=(-b-sqrt(b*b+4*a))/2
%第四题
fori=l:
100
ifi==l
f(i)=l;
elseifi==2
f(i)=0;
elseifi==3
f(i)=l;
else
f(i)=Hi-l)-2*f(i-2)+f(i-3);
end
end
max(f)
min(f)
sum(f)
length(find(f>0))
length(find(f==O))
length(find(f<0))
%第五题:
s=O;n=O;
fori=2:
49
b=i*(i+l)-l;
m=fix(sqrt(b));
forj=2:
m
ifrem(b,j)==0
break
end
end
ifj==m
n=n+l;
s=s+b;
end
end
n
s
%实验五函数文件
%第_题
functiony=matl(x)%建立函数文件matl.m
y=[exp(x),log(x),sin(x),cos(x)];
%在斋令窗口调用上述函数文件:
y=matl(l+i)
%第二题程序一
function[a,b,N,M]=shiyanwu2(m,n,t)
A=[m*cos(t*pi/180),-m,-sin(t*pi/180),0;m*sin(t*pi/180),0,cos(t*pi/180),0;0,n,-sin(t*pi/180),0;0,0
,-cos(t*pi/180),1];
B=[O,9.8*m,O,6.§*n];
C=inv(A)*B';
a=C(l);
b=C⑵;
N=C⑶;
M=C(4);
%在命令窗口调用该函数文件:
m]=input('m]=');
m2=input('m2=');
theta=input(,theta=,);
[al,a2,N1,N2]=shiyanwu2(ml,m2,theta)
%第二题程序二
functionX=mat2(ml,m2,t)
g=9.8;
A=[ml*cos(t*pi/l80),-ml,-sin(t*pi/l80),0;ml*sin(t*pi/l80),0,cos(t*pi/l80),0;0,m2,-sin(t*pi/l80)
0;0,0,・cos(t*pi/180),1];
B=[0;ml*g;0;m2*g];
X=inv(A)*B;
%在命令窗口调用该函数文件:
X=mat2(l,l,60)
%第=题
functionflag=mat3(x)
flag=l;
fori=2:
sqrt(x)
ifrem(x,i)==0
flag=O;
break;
end
end
%在命令窗口调用该函数文件:
fori=10:
99
j=10*rem(i,10)+fix(i/10);
ifmat3(i)&mat3(j)
disp(i)
end
end
%第四题
functiony=fx(x)
y=l./((x-2).A2+0.1)+1./((x-3).A4+0.01);
%在命令窗口调用该函数文件:
y=fx
(2)
a=[l,2;3,4];
y=fx(a)
%第五题
%(D
functionfl=mat5(n)
fl=n+10*log(n*n+5);
%在命令窗口中调用该函数文件:
y=mat5(40)/(mat5(30)+mat5(20))
%
(2)方法一
functionf2=mat6(n)
f2=0;
fori=l:
n
f2=f2+i*(i+l);
end
%在命令窗口中调用该函数文件如:
y=mat6(40)/(mat6(30)+mat6(20))
%
(2)歹法二
functionf2=mat7(n)
i=l:
n;
m=i.*(i+l);
f2=sum(m);
end
%在命令窗口中调用该函数文件如:
y=mat7(40)/(mat7(30)+mat7(20))
%实验六高层绘图操作
%第一题:
x=linspace(0,2*pi,101);
y=(0.5+3*sin(x)./(l+x.A2)).*cos(x);
plot(x,y)
%第二题:
%
(1)
x=linspace(-2*pi,2*pi,l00);
yl=x.A2;
y2=cos(2*x);
y3=yl.*y2;
plot〔x,yl,3,x,y2,k「,x,y3」y--,);
text(4,16,Meftarrowyl=xA2*);
text(6*pi/4,-1/\downarrowy2=cos(2*x)');
text(-1.5*pi,-2.25*pi*pi,*\uparrowy3=yl*y2');
%
(2),
x=linspace(-2*pi,2*pi,100);
yl=x.A2;
y2=cos(2*x);
y3=y].*y2;
subplot(1,3,1);%分区
plot(x,yl);
title('yl=xA2');%设置标题
subplot(l,3,2);
plot(x,y2);
title(,y2=cos(2*x)*);
subplot(l,3,3);
plot(x,y3);
title(*y3=xA2*cos(2*x)*);
%(3)
x=linspace(-2*pi,2*pi,20);
yl=x.A2;
subplot(2,2,l);%分区
bar(x,yl);
titlefyl=xA2的条形图,);%设置标题
subplot(2,2,2);
stairs(x,yl);
title(*yl=xA2的阶梯图
subplot(2,2,3);
stem(x,yl);
title(*yl=xA2的杆图);
subplot(2,2,4);
fill(x,y1如果少了F则会出错
titleCyl=xQ的填充图);
%其他的函数照样做。
%第三题
x—_5.001.5.
y=[];%•起焰'设y为空向量
forxO=x
ifx0<=0%不能写成x0=<0
y=[y,(xO+sqrt(pi))/exp⑵];%将x对应的函数值放到y中
y=[y,0.5*log(xO+sqrt(l+xOA2))];end
a=input('a=');
b^input(^');
n=input(*n=,);
t=-2*pi:
0.01:
2*pi;
r=a*sin(b+n*t);
polar(t,r)
%筹五题
x=linspace(-5,5,21);
y=linspace(0,10,31);
[x,y]=meshgrid(x,y);%在[.5,5]*[0,10]的范围内生成网格坐标
z=cos(x).*cos(y).*exp(-sqrt(x.A2+y.A2)/4);
subplot(2,l,l);
surf(x,y,z);
subplot(2,l,2);
contour3(x,y,z,50);%其中50为高度的等级数,越大越密
%第六题
ezsurf('cos(s)*cos(t)7cos(s)*sin(t)7sin(s),,[0,0.5*pi,0,1.5*pi]);%利用ezsurf隐函数
shadinginterp%遂行插值着色处理
%实验八数据处理与多项式运算
%第一题
%
(1)
A=rand(1,30000);
b=mean(A)
std(A,0,2)
%Q)
max(A)
min(A)
%(3)
n=0;
fori=l:
30000ifA(i)>0.5n=n+l;
end
end
p=n/30000%第二题%
(1)A=45+51*rand(100,5);[Y,U]=max(A)[a,b]=min(A)%
(2)m=mean(A)s=std(A)%(3)sum(A,2)[Y,U]=max(ans)[a,b]=min(ans)%(4)
[zcj,xsxh]=sort(ans)%第三题h=6:
2:
18;
x=6.5:
2:
17.5;
tl=[18,20,22,25,30,28,24];t2=[15,19,24,28,34,32,30];Tl=spline(h,tl,x)T2=spline(h,t2,x)%第四题
x=l:
0.1:
101;
yl=logl0(x);
p=polyfit(x,yl,5)
y2=polyval(p,x);
plot(x,yl,?
x,y2,=)%第五题
%
(1)
pl=[l,2,4,0,5];
p2=[l,2];
p3=[l,2,3];
p=p1+[0,conv(p2,p3)]%为使两向量大小相同,所以补0
%Q)
A=roots(p)
%(3)
A=[-l,1.2,.1.4;0.75,2,3.5;0,5,2.5];
polyval(p,A)
%(4)
polyvalm(p,A)
%实验十五综合实验
%第一题
%定义函数文件
functionzp=fs(z,n)
zp=0;
z=0;
fork=l:
n;
z=l+imag(z)-1.4*real(z)A2+i*real(z)*0.3;
zp=[zp,z];
end
%在主窗口调用该函数:
n=30000;
z=0;
zp=fs(z,n);
plot(zp,'p','markersize',2,'color',F)
%第二题
quad('l/sqrt(2*pi)*exp(・x.*x/2)',0,1)
symsx
int(l/sqrt(2*pi)*exp(-x.*x/2),0,1)
%第三题
%定义函数文件
functiondx=apollo(t,x)
mu=l/82.45;
mustar=l-mu;
rl=sqrt((x
(1)+mu)A2+x(3)A2);
r2=sqrt((x
(1)-mustar)A2+x(3)A2);
dx=[x
(2);2*x(4)+x
(1)-mustar*(x
(1)+mu)/r1A3-mu*(x(l)-mustar)/r2A3;
x(4);-2*x
(2)+x(3)-mustar*x(3)/rlA3-mu*x(3)/r2A3];
%在主窗口调用该函数:
x0=[1.2;0;0;-1.04935751];
options=odeset(,reltor,1e-8);
%该命令的另一种写法是options=odeset;options.reltol=1e-8;
[t,y]=ode45(@apollo,[0,20],x0,options);
plot(y(:
l),y(:
3))%绘制x和y图像,也就是卫星的轨迹
titlefAppollo卫星运动轨迹)
xlabel('X')
ylabel(Y)
%第四题
%这是一个力矩平衡问题,可列方程:
500x1,5xcosa=400x2.0xcos(7r/3-a)
%解得a=26.8021°o
%程序一:
迭代法解方程
xl=input('xl=?
');
x=pi/3.0-acos(15.0*cos(x1)/16);
whileabs(x-xl)>=10e-8
xl=x;
x=pi/3.0-acos(15.0*cos(x1)/16);
ifx>pi/3.0
end
disp(,error,);
end
尸xl*180/pi
%程序二:
利用绘图功能
%分别绘制两个小孩所产生力矩随a变化的曲线,两曲线的交点即是跷跷板平衡时的a
%第一个小孩产生的力矩
%第二个小孩产生的力矩
%找平衡点
alpha=linspace(0,pi/2,80000);
ml=500*1.5*cos(alpha);
m2=400*2*cos(pi/3-alpha);1
k=find(abs(ml-m2)alphaO=alpha(k);
m0=500*i.5*cos(alpha0);
plot(alpha,ml,alpha,m2,alpha。
m0,kp,);
alpha=alpEaO*180/pi%化为角度
%第五题
clear;close;
fplotC18-tA(2/3)',[0,20]);gridon;holdon;
fjplot(,5+t+2*tA(2/3),,[0,20];r,);holdoff;
%发现t约为4
[t,f,h]=fsolve(,18-xA(2/3)-5-x-2*xA(2/3),,4)
%求得t=4.6465
t=linspace(0,t,100);y=18-t.A(2/3)-5-t-2*t.A(2/3);
trapz(t,y)-20
%最大利润6.3232(百万元)