matlab实现简单物理实验模拟
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.ball.m
clear
vx=input('please input the speed ration of Vx and Vi:');
k=input('coefficient of rebound(<1):');
if k>=1 return,end
tm=(1+k)/(1-k);
xm=vx*tm;
figure
plot([0,xm],[0,0],'LineWidth',3)
grid on
axis equal
axis([0,xm,0,1])
title('Trajectoey of ball','FontSize',16)
xlabel('horizontal distance(m)','FontSize',16)
ylabel('Vertical height(m)','FontSize',16)
dt=0.001;
tm=1;
t=0:dt:tm;
x=2*vx*t;
y=1-t.^2;
i=0;
hold on
while tm>0.01
comet(x,y)
plot(x,y,'LineWidth',2)
i=i+1;
tm=2*k.^i;
t=0:0.001:tm;
x=x(end)+2*vx*t;
y=2*k^i*t-t.^2;
end
二.collision.m
clear
m=0:0.5:2;
n=length(m);
theta=0:5:90;
th=theta*pi/180;
[M,TH]=meshgrid(m,th);
PHI=2*asin(sin(TH/2)./(1+M))*180/pi;
figure(1)
plot(theta,PHI(:,1),'o-',theta,PHI(:,2),'s-',theta,PHI(:,3),'d-',...
theta,PHI(:,4),'p-',theta,PHI(:,5),'h-')
xlabel('\it\theta\rm/\circ','FontSize',16)
ylabel('\it\phi\rm/\circ','FontSize',16)
title('Angle of ball and object','FontSize',16)
grid on
legend([repmat('Ratio of mass\itM/m\rm=',n,1),num2str(m')],2)
DE=M./(1+M).*(1-cos(TH));
figure(2)
plot(theta,DE(:,1),'o-',theta,DE(:,2),'d-',theta,DE(:,3),'s-',...
theta,DE(:,4),'p-',theta,DE(:,5),'h-')
xlabel('\it\theta\rm/\circ','FontSize',16)
ylabel('\Delta\itE/mgl','FontSize',16)
title('Mechanical Energy','FontSize',16)
grid on
legend([repmat('Ration of mass\itM/m\rm=',n,1),num2str(m')],2) 三.niudunhuan.m
clear
rm=5;
r=-rm:0.01:rm;
[X,Y]=meshgrid(r);
R=sqrt(X.^2+Y.^2);
I=cos(pi*(R.^2+1/2)).^2;
I(R>rm)=0;
c=linspace(0,1,64)';
figure
d=image(I*64);
%ColorMap([c,c*0,c*0])
%ColorMap([c,c,c*0])
ColorMap([c,c,c])
axis off equal
title('Newton ring','FontSize',16)
pause
h=0;
while 1
h=h+0.02;
I=cos(pi*(R.^2+1/2+2*h)).^2;
I(R>rm)=0;
set(d,'CData',64*I)
drawnow
if get(gcf,'CurrentCharacter')==char(27) break,end
end
四.stick.m
clear
g=10;
v0=12;
theta=input('angle of incidence:');
th=theta*pi/180;
w=10*pi;
l=1;
m1=0.2;
m2=0.3;
r1=l*m2/(m1+m2);
r2=l*m1/(m1+m2);
t0=2*v0*sin(th)/g;
n=200;
t=linspace(0,t0,n);
xc=v0*cos(th)*t;
yc=v0*sin(th)*t-g*t.*t/2;
x1=xc+r1*cos(w*t);
y1=yc+r1*sin(w*t);
x2=xc-r2*cos(w*t);
y2=yc-r2*sin(w*t);
figure
h12=plot([x1(1);x2(1)],[y1(1);y2(1)],'-o','LineWidth',6);
grid on
axis([-0.5,xc(end)+1,-1.5,max(yc)+1])
axis equal
title('Motion of lifgt stick','FontSize',16)
xlabel('x(m)','FontSize',16)
ylabel('y(m)','FontSize',16)
hold on
pause
for i=1:n-1
set(h12,'XData',[x1(i);x2(i)],'YData',[y1(i);y2(i)]);
plot([xc(i);xc(i+1)],[yc(i);yc(i+1)],'LineWidth',2)
plot([x1(i);x1(i+1)],[y1(i);y1(i+1)],'k')
plot([x2(i);x2(i+1)],[y2(i);y2(i+1)],'r')
if floor((i-1)/20)==(i-1)/20
plot([x1(i);x2(i)],[y1(i);y2(i)],'LineWidth',2)
plot(x1(i),y1(i),'ko')
plot(x2(i),y2(i),'ro')
end
drawnow
end
五.tanhuang.m