matlab实现简单物理实验模拟

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档