matlab练习题及答案详解(附程序)

matlab练习题及答案详解(附程序)
matlab练习题及答案详解(附程序)

Matlab练习题及答案详解

一、基础题

1、下表为

1)

2) 把任意两点距离的表中,自己到自己的距离,转变成无穷大

clc

clear

close all

data=xlsread('ti1.xls');%从excel里导入数据

x=data(1,:);%将data里第一行的所有列赋值给x

y=data(2,:);%将data里第二行的所有列赋值给x

n=length(x);%表x的长度

dis=zeros(n,n);%对距离表进行初始化

for i=1:n

for j=1:n

dis(i,j)=sqrt((x(i)-x(j))^2+(y(i)-y(j))^2);%平面坐标距离公式

end

end

dis(dis==0)=inf;%将距离表中为0的数值,变成无穷大

redis=dis;

2、按要求步骤,操作下表

要求:

1) 对每列进行[0,1]区间化'(min())/(max min())

=--;

x x x x

2) 把区间化后的表的右边3列,连接在左边3列下边,构成16行3列的表;

3) 把16行3列进行转置,得到3行16列的表。然后对列进行操作,把3行

16列的表变成一列,后转置成一行,得到最终的结果。

clc

clear

close all

x=load('ti2.txt');%从txt里导入数据

big=max(x);small=min(x);%算出每列的最大最小值

[m,n]=size(x);%表x的行和列的大小

newx1=zeros(m,n);%对newx1进行初始化,大小和初始x一样大

for i=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进行初始化 for j=1:q

newx3((j-1)*p+1:j*p,1)=newx2(:,q);%对newx3进行操作 end

% newx3=reshape(newx2,[],1); renewx=newx3';%最终的结果

3、数值运算

1)用matlab 求下列式子极限

(a) lim x → (b) 0x →2)用matlab 求下列函数的导数

(a)

22sin (1)y x =+ (b) arccos()(,)x f x y ye =

3)用matlab 求下列式子的定积分

(a) 4

?

(b) 31

2

-??

clc clear %===求极限 %====3.1.a=== syms x

y=(x^(1/2)-8)/(x^(1/3)-4);

re1a=limit(y,x,64)

%====3.1.b===

syms x

y=((x^2-2*x+4)^(1/2)-2)/x;

re1b=limit(y,x,0)

%===求导数

%====3.2.a===

syms x

f=(sin(x^2+1))^2;

re2a=diff(f,x)%对x求导

%====3.2.b===

syms x y

f=y*exp(acos(x));

re2bx=diff(f,x)%对x求偏导

re2by=diff(f,y)%对y求偏导

%===求定积分===

%====3.3.a===

syms x

re3a=int((x+2)/(2*x+1)^(1/2),x,0,4)%一重积分

%====3.3.b===

syms x y

re3b=int(int(y/(x^2-1),x,-2,-sqrt(2)),y,1,3)%二重积分

二、提高题

1、画一个正五边形,边长自定。

图1:示例一

clc

clear

close all

a=100;

b=a/(2*sin(36/180*pi));

x=b*[-cos(18/180*pi) 0 cos(18/180*pi)....

sin(36/180*pi) -sin(36/180*pi) -cos(18/180*pi)]; y=b*[sin(18/180*pi) 1 sin(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(0,0,'y=','num2str(p(1))')

axis([-b-b/5 b+b/5 -b-b/5 b+b/5])

axis equal

box off

2、模拟小球的斜抛,模拟参数自定,画出速度图像。

图2:示例二

clc

clear

close all

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);

h=plot(x,y,'r.','markersize',50);

while y>=0

delete(h)

vx=vx-0*detat;

vy=vy-g*detat;

v=sqrt(vx^2+vy^2);

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); hold on

title('x-y','fontsize',14)

axis([0 11 0 3]);box off

subplot(3,1,2)

plot(x,v,'.R','markersize',5)

hold on

title('x-v','fontsize',14)

axis([0 11 6 v0+1]);box off

subplot(3,1,3)

plot(t,v,'.g','markersize',5)

hold on

title('t-v','fontsize',14)

axis([0 1.55 6 v0+1]);box off

pause(0.05)

X=[X,x];

Y=[Y,y];

V=[V,v];

T=[T,t];

end

p=polyfit(X,Y,2)

3、在1的基础上,加上空气阻力的影响,空气阻力大小与速度的平方成正比,

2

(比例系数自己定,也可以上网查,建议取0.5),画出速度图像。

f k v

图3:示例三

clc

clear

close all

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); while y>=0

delete(h)

vx=vx-(k*vx^2)/m*detat;

vy=vy-g*detat-(k*vy^2)/m*detat; v=sqrt(vx^2+vy^2);

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); hold on

title('x-y','fontsize',14)

axis([0 11 0 3]);box off

subplot(3,1,2)

plot(x,v,'.R','markersize',5) hold on

title('x-v','fontsize',14)

axis([0 11 3 v0+1]);box off subplot(3,1,3)

plot(t,v,'.g','markersize',5) hold on

title('t-v','fontsize',14)

axis([0 2.75 3 v0+1]);box off pause(0.1)

X=[X,x];

Y=[Y,y];

V=[V,v];

T=[T,t];

end

p=polyfit(X,Y,2)

4、画一个叠的圆环,圆环参数自定。

图4:示例四clear;

n=input('圆的层数:');

r=5;%圆的半径

theta=linspace(0,2*pi);

x=r*cos(theta);

y=r*sin(theta);

figure,title('叠的圆环','fontsize',14) axis equal

grid on

hold on;

for j=1:n

b=(1+sqrt(3)*(j-1))*r;%圆心b for i=1:n+1-j

a=(2*(i-1)+j)*r;%圆心a

plot(x+a,y+b)

end

end

5、模拟两个小球在水平面上,进行完全弹性碰撞过程,分析两个小球构成系统

的机械能随时间的变化,小球参数自定。(注:考虑摩擦阻力)

附加1:分析两个小球构成系统的机械能随时间的曲线中,为什么在碰撞时刻出现拐点?

附加2:如果碰撞不是完全弹性碰撞,怎么模拟分析?

图5:示例五

clc

clear

close all

m1=2;m2=5;v0=20;detat=0.05;

g=9.8; mu=0.1;r=5;

a=v0^2/(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;

while max(abs(v1),abs(v2))>detat if abs(v1)

v1=0;

elseif abs(v2)

v2=0;

end

clf

axis equal

axis([-a a -r 4*r ])

line([-a a],[0 0])

hold on

qiu(x1,y1,r,'r')

qiu(x2,y2,r,'g')

x1=x1+v1*detat;

x2=x2+v2*detat;

if abs(x1-x2)>2*r

v1=v1-sign(v1)*mu*g*detat; if k==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;

end

pause(0.01)

t=t+detat;

T=[T,t];

V1=[V1,v1];

V2=[V2,v2];

end

E=1/2*m1*V1.^2+1/2*m2*V2.^2;

figure

subplot(2,1,1)

plot(T,E','linewidth',2)

box off

grid on

title('E-t')

subplot(2,1,2)

plot(T,V1,T,V2,'linewidth',2)

box off

grid on

title('V1,V2-t')

三、挑战题

1、模拟圆环的匀减速运动,并画出速度时间(V-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;

axis equal

hold on

axis([0 v.^2/(2*mu*g)+2*r 0 2.5*r]) grid on

hold on

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');

while v>=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')

grid on

hold on

box off

2、模拟单摆的运动,并证明单摆的等时性。

图7:示例七clc

clear

close all

l=1;%摆长

zq=[];

th=[];

% for l=1:10;

theta=pi/3;%初始摆角

for theta=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)

% hold on

k=0.1;%速度衰减系数,证明衰减和单摆的周期无关

while (l*(1-cos(s/l))+1/2*v^2)>detat%全过程

% for i=1:1000

v=v+g*sin(theta)*detat-sign(v)*k*v^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);

% hold on

% plot([0,x],[0,y],'k','linewidth',2);

% hold on,axis equal

% axis([-l-1/2 l+1/2 -l-1/2 1/2])

% title(sprintf('模拟单摆,摆长L=%.1fm,',l),'fontsize',15)

% xlabel('x/m')

% ylabel('y/m')

% box off,grid on,hold on

% subplot(1,2,2)

% plot(S,T,'linewidth',2)

% hold on,

% axis([-l-1/2 l+1/2 0 10])

% title(sprintf('衰减系数k=%.1f,s-t图像',k),'fontsize',15)

% xlabel('离开平衡位置的弧长s/m')

% ylabel('时间t/s')

相关主题
相关文档
最新文档