matlab模拟三体运动_MATLAB教学:模拟三体运动

本文提供了一个基于MATLAB的三体运动模拟程序,通过设定不同质点的位置、速度及电荷等参数,展示三体间相互作用下的动态变化过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

01754e2930f7f9ba159a411e13cf0e37.png

代码如下

clc;clear;

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

N=3;

e=2.63;%电荷

%x=zeros(1,N);y=zeros(1,N);vx=zeros(1,N);vy=zeros(1,N);ax=zeros(1,N);ay=zeros(1,N);ke=ones(1,N);

x=[-sqrt(3),0,sqrt(3)];

y=[-1,2,-1];%设置三个质点的初始位置

vx=[-0.5,1,-0.5];

vy=[sqrt(3)/2,0,-sqrt(3)/2];%设置三个质点的初始速度

ax=zeros(1,N);

ay=zeros(1,N);

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

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

dt=0.005;

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

set(gcf,’doublebuffer’,’on’)%消除抖动

set(gca,’xlim’,[-3 3],’ylim’,[-3 3]);%设置坐标轴范围

hold on;

axis equal;

for m=1:N

p(m)=plot(x(m),y(m),’color’,’b’,’marker’,’.’,’markersize’,15); %所有质点初始位置以及大小设置

end

for jj=1:50000 %设定运行距离

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))^2+(y(n)-y(m))^2)^(-1.5)/M(m);

%按吸引力的格式写的加速度,如果要改为排斥力,需要将等号后面的m和n交换位置

ay(m)=ay(m)+ke(n)*ke(m)*(y(n)-y(m))*((x(n)-x(m))^2+(y(n)-y(m))^2)^(-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));%设置质点的运动过程

if m==1

plot(x(m),y(m),’b*’);%画出三个质点的运动轨迹

elseif m==2

plot(x(m),y(m),’r*’);

else

plot(x(m),y(m),’g*’);

end

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

break;

end

end

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

break;

end

pause(pausetime);%暂停一会

drawnow

end

打赏作者

d0186d93e6eac54f8f8cba71444ae48d.pngH.C

微信支付

905925b096cd46673e42796fa5b5f7dd.png

支付宝

9f3844fc34dfc16701511ffde9c4715e.png

1、打开已有的一组配置文件(.tbc)并运行(点击播放按钮)。 "File"菜单下有导入(Import)、导出(Export)功能,在不能上传附件时方便以纯文本方式交流自己搜索出来的配置! 2、手工设定初始条件的全部数值(点击魔术棍按钮)。分别指定个物的初始条件(X、Y、Z坐标,质量,初始速度的幅度、在XY平面上的角度0~360、在XZ平面上的角度0~360)。四个圆形选项(Radio Button)是参照系选择:默认的"Normalize to Centroid"是按系统质心作为参照系进行速度平衡,相当于观察者总是跟随的质心运动。另外个选项分别是以第一、二、个天作为参照系,即总是把这个天放在中心位置从不移动--注意这是非惯性参照系!(一般应选取行星主要围绕的那个恒星,方便观察行星轨道) 如果XZ平面上的初始速度角度都是0,则退化为二维的。 不过手工设定的条件通常都很难稳定运行。 3、设定搜索条件,让软件自动搜索。搜索分为两步: 3.1、搜索稳定的解(点击望远镜按钮) 第一部分是每个物的约束条件:坐标最大值、最小质量、最大质量、最小速度幅度、最大速度幅度。 第二部分是是否要求在最初N步里超出一个边长为M的方框范围。这样看起来比较有趣,但搜索起来可能很慢。 第部分是必须在N步里不超出一个边长为M的方框范围。否则它们很快发散就不好玩了。 然后那个复选框是:是否只进行二维搜索。 搜索结束后会出现一组初始条件值,点OK就开始运行了。 3.2、在解的基础上,搜索稳定的行星解(点击右下有小球的望远镜按钮) 手工设定或者自动搜索出来的解,如果喜欢的话,可以存盘,也可以导出为纯文本贴在论坛上与大家共享。压缩包里的.tbc也是偶自己用这个软件搜出来的。 四个播放按钮: 第一个播放形状的,是开始或者继续运行; 第二个暂停形状的,是暂停; 第个短箭头,是减速运行; 第个双箭头,是加速运行。 速度有很多档次,从减速6倍到加速运行100倍,直到加速100倍跳3125帧(相当于加倍312500倍,但每隔3125帧才显示一帧,所以看起来很不连续),每5倍为一个档次。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值