【问题标题】:Simulate Orbital Motion around a body in Matlab在 Matlab 中模拟围绕物体的轨道运动
【发布时间】:2014-11-10 13:02:53
【问题描述】:

我正在开发一个非常简单的程序来模拟一个物体围绕另一个物体的轨道运动,就像卫星围绕地球一样。我遵循了书籍和互联网上的指导方针和方程式,但该物体似乎根本没有在轨道上运行。如果有人可以,请帮助我。提前致谢。代码如下

v0=80;
theta=45*pi/180;

vx(1)=v0*cos(theta);
vy(1)=v0*sin(theta);
px(1)=0;
py(1)=0;

mass=100; %kg
cmass=400; % mass of the body at 400,500
    ax=0;
%
g=9.8 ;%m/s^2
ay=-g;

p2x=400; % x co-ordinate of the stationary body
p2y=500; % y co-ordinate of the stationary body

G=6.674*10^-11; % the Gravitational Constant
figure(1)
plotsize=800;
i=1;
dt=.1;
t=0;
while(t<20)

%a2x=a2x-0.10;
%a2y=a2y+0.50;
r=sqrt((p2x-px(i))^2+(p2y-py(i))^2); % distance between the two bodies
F=((G*mass*cmass)/r^2);   % force by formula f=(G*m1*m2)/r^2
a=-(1/cmass^2)*F;    % acceleraion  a=1/m1^2*F

vx(i+1)=vx(i)+(ax)*dt;
vy(i+1)=vy(i)+(ay)*dt;

px(i+1)=px(i)+vx(i)*dt;
py(i+1)=py(i)+vy(i)*dt;

hold off
plot(px(i+1),py(i+1),'o','MarkerSize',15)

hold on
plot(px,py,'r')
plot(p2x,p2y);
axis([0 plotsize 0 plotsize])
pause(.1) %pause for graphics
i=i+1;
t=t+dt;

结束

【问题讨论】:

  • 我已经看到了这个解决方案,先生。主要问题是我的mass1目前不在mass2的引力中,它正在移动,当它靠近时,拉力变强,mass2会吸引mass 1。
  • 这里有一些复杂的物理现象。你有没有把两个脚本拼在一起?你的重量很小,所以引力会很弱。然后,此外,您已将整个场景置于地球有效重力中,并“发射”了较小的粒子。该图相当准确地显示了如果您以每小时约 180 英里的速度将人类大小(100 公斤)的物体从地球上的地面射向一辆小型汽车(400 公斤)大小的物体,而忽略空气阻力会发生什么.基本上,与任何射弹几乎没有区别。

标签: matlab simulation gravity satellite


【解决方案1】:

我相当肯定你的逻辑是错误的。您想以 dt 为步长迭代时间 t,n 次,并且在时间达到 20 个单位(年?)之后停止。在 t

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    相关资源
    最近更新 更多