matlab模拟三体运动_三体运动的matlab演示.docx

三体运动的matlab演示

I**

1MX

“ %

F(Xr 心) 6j6)( Xr X J

j "r*-疝出制痒十丘忑忑拓1 )民严皿_辿少

..g席+*仍才芮融訴

取殖翎为Mj. g. M);耒出a,x ,^,H 加,細r Q族 > 弘Q .d '

风)严歯二人2〉十%2)七匕九1/ 吐枷卜).

仏心弘WH必捫打沙甘忙

411咼瀆不;

2驚:时対股g.切:別M船0|。)人片|町 瓜严讪;"

X +洞加I的严如如S)十九t

"3⑹ ' 呦3片附旦).

丫肛* % Mt bl刍峑角

figure('name','三体运动’);%设置标题名字

N=3;%x=zeros(1,N);y=zeros(1,N);vx=zeros(1,N);vy=zeros(1,N);ax=zer

os(1,N);ay=zeros(1,N);ke=o nes(1,N);

% 设置三个质点的初始位置

% 设置三个质点的初始速度

x=[0,2,3];y=[0,2,0]; vx=[-1.5,1,-0.8];vy=[1.2,1,0.6]; ax=zeros(1,N);ay=zeros(1,N);

ke=[1.5,6,2];%设置三个质点的电荷相对值

M=[1,5,1];%设置三个质点的质量相对值

dt=0.005; pausetime=0.002;

时间;

%设置时间微小元长度,越小演示越精细,但越慢;设置暂停

set(gcf, set(gca, hold I

'doublebuffer'

'xlim',[-7 7],

on ;axis equal ;

for m=1:N

,'on' )%消除抖动

'ylim',[-7 7]);%设置坐标轴范围

p(m)=plot(x(m),y(m),

有质点初始位置以及大小设置

'color' , 'k', 'marker'

,‘markersize'

,15);

%所

end

for jj=1:5000

for m=1:N

% 设定运行距离

ax(m)=0;ay(m)=0;

for n=1:N

if m?=n

ax(m)=ax(m)+ke( n)*ke(m)*(x (n )-x(m))*((x( n)-x(m))A2+(y( n)-y(m))A2)A(-1

.5)/M(m);%按吸引力的格式写的加速度,如果要改为排斥力,需要将等号后面的

位置

m和n交换

ay(m)=ay(m)+ke( n)*ke(m)*(y( n)-y(m))*((x( n)-x(m))A2+(y( n)-y(m))A2)A(-1 .5)/M(m);

else

end

end

x(m)=x(m)+vx(m)*dt+0.5*ax(m)*dt^2;

y(m)=y(m)+vy(m)*dt+0.5*ay(m)*dt^2;

vx(m)=vx(m)+ax(m)*dt;

vy(m)=vy(m)+ay(m)*dt;

set (p( m),'xdata' ,x(m), 'ydata'

%计算质点的新位置

,y(m));%设置质点的运动过程

plot(x(m),y(m),'color' , 'b' ); %画岀三个质点的运动轨迹

if abs(x(m))>10||abs(y(m))>10%如果质点已经运动到边框外面则停止运行,跳

岀该层循环

break ;

end

-6

-6

%如果质点已经运动到边框外面则停止运行,停止运行

%如果质点已经运动到边框外面则停止运行,停止运行

暂停一会

end

if abs(x(m))>10||abs(y(m))>10 break ;

end

% p ause( pausetime); %

draw now end

-2640-46024-6”4-20 10运行结果

-2

6

4

0

-4

6

0

2

4

-6”4-2

0 10

见文库内本人所编写其他的

见文库内本人所编写其他的matlab模拟。

说明:更改不同的参数得到不同的运行结果。

以上程序只是平面内的演示,希望读者根据平面内的模拟程序得到空间内的演示程序。

也可以添加更多的质点,得到更多体的运动,不过会使得运行变慢,较好的计算机才能做到。 如要添加到四个质点,则需要N=4;且x,y,vx,vy,ke,M都要相应的有四个初始值。

程序目前存在的问题:

当两个质点运动到一点(即发生碰撞时),会产生速度的突变,如何能较好解决这个问题?

如果能够,希望能得到空间内的演示。

你可能感兴趣的:(matlab模拟三体运动)