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;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值