matlab模拟三体运动_Matlab模拟三体运动

m1=1.5e30;%1号星的质量-红

m2=3.01e30;%2号星的质量-蓝

m3=3.5e30;%3号星的质量-绿

h1=animatedline('MaximumNumPoints',2000,'color','r');%动画

h2=animatedline('MaximumNumPoints',2000,'color','b');

h3=animatedline('MaximumNumPoints',2000,'color','g');

G=6.67e-11;%引力常量

v1=[20,40];%三颗恒星的初始速度

v2=[-30,20];

v3=[27,-30];

pos1=[0,1.5e18];%三颗恒星的坐标

pos2=[1.5e18,3e18];

pos3=[3e18,0];

delt=0.1;%观测时间间隔

for i=1:10000

addpoints(h1,pos1(1),pos1(2));

addpoints(h2,pos2(1),pos2(2));

addpoints(h3,pos3(1),pos3(2));

drawnow;

pos1=pos1+v1*delt;%更新位置

pos2=pos2+v2*delt;

pos3=pos3+v3*delt;

r12=normest(pos2-pos1);

r23=normest(pos3-pos2);

r31=normest(pos1-pos3);

f12_len=G*m1*m2/(r12^2);

f23_len=G*m2*m3/(r23^2);

f31_len=G*m3*m1/(r31^2);

f12_dir=(pos2-pos1)/r12;%计算万有引力

f23_dir=(pos3-pos2)/r23;

f31_dir=(pos1-pos3)/r31;

f12=f12_len*f12_dir;

f23=f23_len*f23_dir;

f31=f31_len*f31_dir;

v1=v1+(f12-f31)*delt;

v2=v2+(f23-f12)*delt;

v3=v3+(f31-f23)*delt;

end

clear;

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