matlab练习题及答案详解附程序.docx
《matlab练习题及答案详解附程序.docx》由会员分享,可在线阅读,更多相关《matlab练习题及答案详解附程序.docx(20页珍藏版)》请在冰豆网上搜索。
matlab练习题及答案详解附程序
Matlab练习题及答案详解
基础题
1、下表为8组坐标
x
4.22■
7.926.
568.4
96.79
'7.43
6.557.
06
y
9.16!
9.590.
369.3
47.58
3.92
1.710.
32
1)算出任意两点间的空间距离,得到任意两点距离表;
2)把任意两点距离的表中,自己到自己的距离,转变成无穷大
clcclear
closeall
data=xlsread('ti1.xls');%从excel里导入数据
x=data(1,:
);%将data里第一行的所有列赋值给x
y=data(2,:
);%将data里第二行的所有列赋值给x
n=length(x);%表x的长度
dis=zeros(n,n);%对距离表进行初始化
fori=1:
n
forj=1:
n
dis(i,j)=sqrt((x(i)-x(j))A2+(y(i)-y(j))A2);%平面坐
标距离公式
end
end
dis(dis==0)=inf;%将距离表中为0的数值,变成无穷大
redis二dis;
2、按要求步骤,操作下表
201.90
2969.52
701.24
1325.05
20905.68
16306.68
219.00
2482.49
724.57
1455.57
22759.92
17024.76
221.10
2187.45
746.62
:
1522.89:
24940.68:
18925.92
324.50
3585.72
861.55
1448.82
25935.84
19960.32
346.97
4282.14
800.80
1942.93
27596.40
19569.60
332.90
6801.57
827.75
2142.83
21494.401
15911.88
359.53
5813.56
846.43
2317.28
22567.08
16628.16
406.98
4950.91
778.27
2560.28
24301.38
18474.49
要求:
1)对每列进行[0,1]区间化x'(xmin(x))/(maxmin(x));
2)把区间化后的表的右边3列,连接在左边3列下边,构成16行3列的表;
3)把16行3列进行转置,得到3行16列的表。
然后对列进行操作,把3行16列的表变成一列,后转置成一行,得到最终的结果。
clc
clear
closeall
x=load('ti2.txt');%从txt里导入数据
big=max(x);small=min(x);%算出每列的最大最小值
[m,n]=size(x);%表x的行和列的大小
newx仁zeros(m,n);%对newx1进行初始化,大小和初始x一样大
fori=1:
n
newx1(:
i)=(x(:
i)-small(i))./(big(i)-small(i));
end
newx2=zeros(2*m,n/2);%对最新的表进行初始化大小为,行为newx1
的2倍,列为一半
newx2(1:
m,1:
n/2)=newx1(1:
m,1:
n/2);%把左边3列不操作的值,直
接赋值给newx2上边
newx2(m+1:
end,1:
n/2)=newx1(1:
m,n/2+1:
end);%把右边的3列,赋
值给newx2下边
[p,q]=size(newx2);%表newx2的行和列的大小
newx3=zeros(p*q,1);%对newx3进行初始化
forj=1:
q
newx3((j-1)*p+1:
j*p,1)=newx2(:
q);%对newx3进行操作
end
%newx3二reshape(newx2,[],1);renewx=newx3';%最终的结果
3、数值运算
1)用matlab求下列式子极限
4
X
2
arccos(x)
f(x,y)ye
2ydxdy
2」x23=1
re1a=limit(y,x,64)%====3.1.b===symsx
y=((x^2-2*x+4)八(1/2)-2)/x;
re1b=limit(y,x,0)%===求导数
%====3.2.a===
symsx
f=(sin(xA2+1))A2;
re2a=diff(f,x)%对x求导%====3.2.b===symsxyf=y*exp(acos(x));
re2bx=diff(f,x)%对x求偏导
re2by=diff(f,y)%对y求偏导
%===求定积分===%====3.3.a===symsxre3a=int((x+2)/(2*x+1)A(1/2),x,0,4)%%====3.3.b===symsxyre3b=int(int(y/(xA2-1),x,-2,-sqrt
(2)),y,1,3)%
二、提高题
1、画一个正五边形,边长自定
i»lr
'M'tt||i
4041O
图1:
示例一
clc
clear
closeall
a=100;
b二a/(2*sin(36/180*pi));
x二b*[-cos(18/180*pi)0cos(18/180*pi).…
sin(36/180*pi)-sin(36/180*pi)-cos(18/180*pi)];
y=b*[sin(18/180*pi)1sin(18/180*pi).…
-cos(36/180*pi)-cos(36/180*pi)sin(18/180*pi)];
plot(x,y,'linewidth',2)
text(-b/4,0,'正五边形','fontsize',20)
text(O,O,'y二','num2str(p
(1))')
axis([-b-b/5b+b/5-b-b/5b+b/5])
axisequalboxoff
2、模拟小球的斜抛,模拟参数自定,画出速度图像
图2:
示例
clc
clear
closeall
g=9.8;
v0=10;
theta二pi/4;
detat=O.O1;
x=0;y=0;t=0;X=[];Y=[];V=[];T=[];
vy=v0*sin(theta);
vx二vO*cos(theta);
h=plot(x,y,'r.','markersize',50);
whiley>=0
delete(h)
vx=vx-0*detat;
vy=vy-g*detat;
v=sqrt(vxA2+vyA2);
x=x+vx*detat;y=y+vy*detat;
t=t+detat;
%==图形控制部分subplot(3,1,1)plot(x,y,'.b')h=plot(x,y,'r.','markersize',50);holdontitle('x-y','fontsize',14)axis([01103]);boxoffsubplot(3,1,2)plot(x,v,'.R','markersize',5)holdontitle('x-v','fontsize',14)axis([0116v0+1]);boxoffsubplot(3,1,3)plot(t,v,'.g','markersize',5)holdontitle('t-v','fontsize',14)axis([01.556v0+1]);boxoff
pause(0.05)
X=[X,x];
Y=[Y,y];
V=[V,v];
T=[T,t];
end
p=polyfit(X,Y,2)
3、在1的基础上,加上空气阻力的影响,空气阻力大小与速度的平方成正比,
fk|v2(比例系数自己定,也可以上网查,建议取0.5),画出速度图像
图3:
示例三
clc
clear
closeall
g=9.8;
v0=10;
theta二pi/4;
detat=0.01;x=0;y=0;t=0;X=[];Y=[];V=[];T=[];vy=v0*sin(theta);vx=v0*cos(theta);
k=0.5;m=2;h=plot(x,y,'r.','markersize',50);whiley>=0
delete(h)
vx二vx-(k*vx^2)/m*detat;
vy二vy-g*detat-(k*vy^2)/m*detat;
v=sqrt(vxA2+vyA2);
x=x+vx*detat;
y=y+vy*detat;
t=t+detat;
%==图形控制部分subplot(3,1,1)plot(x,y,'.b')h=plot(x,y,'r.','markersize',50);holdontitle('x-y','fontsize',14)axis([01103]);boxoffsubplot(3,1,2)
plot(x,v,'.R','markersize',5)holdon
title('x-v','fontsize',14)axis([0113v0+1]);boxoffsubplot(3,1,3)plot(t,v,'.g','markersize',5)holdontitle('t-v','fontsize',14)axis([02.753v0+1]);boxoffpause(0.1)
X=[X,x];
Y=[Y,y];
V=[V,v];
T=[T,t];
end
p=polyfit(X,Y,2)
4、画一个叠的圆环,圆环参数自定
clear;
n=input('圆的层数:
');
r=5;%圆的半径
theta=linspace(0,2*pi);
x=r*cos(theta);
y=r*sin(theta);
figure,title('叠的圆环','fontsize',14)
axisequal
gridon
holdon;
forj=1:
n
b=(1+sqrt(3)*(j-1))*r;%圆心b
fori=1:
n+1-j
a=(2*(i-1)+j)*r;%圆心a
plot(x+a,y+b)
endend
5、模拟两个小球在水平面上,进行完全弹性碰撞过程,分析两个小球构成系统的机械能随时间的变化,小球参数自定。
(注:
考虑摩擦阻力)附加1:
分析两个小球构成系统的机械能随时间的曲线中,为什么在碰撞时刻出现拐点?
附加2:
如果碰撞不是完全弹性碰撞,怎么模拟分析?
3D
L
帖.
-
DO
0
-
•
D
II
1
1
1
1
1
1
5
-BO
■30
30
o
0
图5:
示例五
clc
clear
closeall
m仁2;m2=5;v0=20;detat=0.05;
g=9.8;mu=0.1;r=5;
a=v0A2/(2*mu*g)*1/2;
x1=-a/2;y1=r;
x2=0;y2=r;
v1=v0;v2=0;k=0;
V1=[];V2=[];T=[];t=0;
whilemax(abs(v1),abs(v2))>detatifabs(v1)v1=0;
elseifabs(v2)v2=0;
end
clf
axisequal
axis([-aa-r4*r])
line([-aa],[00])
holdon
qiu(x1,y1,r,'r')
qiu(x2,y2,r,'g')
x1=x1+v1*detat;
x2=x2+v2*detat;
ifabs(x1-x2)>2*r
v1=v1-sign(v1)*mu*g*detat;
ifk==1
v2=v2-sign(v2)*mu*g*detat;end
else
v11=v1;v1=v11*(m1-m2)/(m1+m2);v2=2*v11*m1/(m1+m2);
k=1;
endpause(0.01)t=t+detat;
T=[T,t];
V1=[V1,v1];
V2=[V2,v2];
end
E=1/2*m1*V1.A2+1/2*m2*V2.A2;
figuresubplot(2,1,1)plot(T,E','linewidth',2)boxoffgridontitle('E-t')subplot(2,1,2)
plot(T,V1,T,V2,'linewidth',2)boxoff
gridon
title('V1,V2-t')
三、挑战题
图6:
示例六
clc
clear
v=20;%初始速度r=5;g=9.8;
mu=0.3;
dt=0.1;
a=r;
b=r;
w=v/r;
v0=v;
t=0;
x0=0;
t1=t;
x0=0;
axisequal
holdon
axis([Ov.A2/(2*mu*g)+2*r02.5*r])gridon
holdon
theta=0:
1/50:
2*pi;x=a+r*cos(theta);
y=b+r*sin(theta);q=plot(x,y,'.k');
p=plot(x
(1),y
(1),'.k');whilev>=0
delete(q);
delete(p)
v=v-mu*g*dt;
w=w-(mu*g)/r*dt;
theta=theta-w*dt;
a=a+v*dt;
b=r;
t1=t1+dt;
v0=[v0,v];
t=[t,t1];
x=a+r*cos(theta);
y=b+r*sin(theta);
q=plot(x,y,'.r');
p=plot(x
(1),y
(1),'.k','markersize',15);
pause(0.2)
title('\rm圆环匀减速滚动','fontsize',15)
xlabel('距离\itm')
ylabel('高度\itm')
end
figure
plot(t,v0,'linewidth',2);
title('圆环\itV-\itT图像','fontsize',15)
xlabel('时间\rmt\it/s')ylabel('速度\rmV\itm/s')gridonholdonboxoff
4?
一扭・
图7:
示例七
clcclearcloseall1=1;%摆长
zq=[];
th=[];
%forl=1:
10;
theta=pi/3;%初始摆角
fortheta=pi*10/180:
0.01:
pi/2%证明单摆的周期和初始最大角度无关
v=0;s=-l*theta;g=9.8;detat=0.01;t=0;
T=[];S=[];
x=0;y=0;
%plot(0,0,'*k','markersize',10)
%holdon
k=0.1;%速度衰减系数,证明衰减和单摆的周期无关
while(l*(1-cos(s/l))+1/2*"2)>detat%全过程
%fori=1:
1000
v=v+g*sin(theta)*detat-sign(v)*k*"2*detat;
s=s-v*detat;
theta=s/l;
x=-l*sin(theta);
y=-l*cos(theta);
t=t+detat;
T=[T,t];
S=[S,s];
%clf
%subplot(1,2,1)
%plot(x,y,'.r','markersize',50);
%holdon
%plot([0,x],[0,y],'k','linewidth',2);
%holdon,axisequal
%axis([-l-1/2l+1/2-l-1/21/2])
%title(sprintf('模拟单摆,摆长L=%.1fm,',l),'fontsize',15)
%xlabel('x/m')
%ylabel('y/m')
%boxoff,gridon,holdon
%subplot(1,2,2)
%plot(S,T,'linewidth',2)
%holdon,
%axis([-l-1/2l+1/2010])
%title(sprintf('衰减系数k=%.1f,s-t图像
',k),'fontsize',15)
%xlabel('离开平衡位置的弧长s/m')
%ylabel('时间t/s')
%boxoff,gridon,holdon
%pause(0.01)
end
%====求周期====m=length(S);TT=[];j=1;
fori=1:
m-2
ba=(S(i+1)-S(i))*(S(i+2)-S(i+1));
ifba<0
TT(j)=T(i+1);
j=j+1;
end
end
NT=TT(3:
end)-TT(1:
end-2);
zhouqi=mean(NT);
zq=[zqzhouqi];
end
theta=pi*10/180:
0.01:
pi/2;
plot(theta,zq)
%end
%l=1:
10;T=2*pi*sqrt(l/9.8);
%plot(l,zq,l,T)
%holdon
2)用matlab求下列函数的导数
22
(a)ysin(x1)(b)
3)用matlab求下列式子的定积分
4x2
(a)0x=2dx(b)
0J2x1
clc
clear
%==求极限
%====3.1.a===
symsxy=(xA(1/2)-8)/(xA(1/3)-4);