matelab星体运动轨迹

发布时间:2011-12-08 12:50:45

嫦娥一号与月亮、地球、太阳关系演示图

欧阳仕粮 学号:20084051014

(吉首大学物理与机电工程学院,湖南 吉首 416000

:用matlab模拟嫦娥一号人造卫星运围绕月球做周期性运动时,人造卫星、月球、地球相对于太阳的运动轨迹动画。展现了人造卫星绕月飞行时相对与参照物太阳的运动轨迹,便于直观的了解卫星相对于太阳的相对运动。

关键词:卫星运动轨迹;相对运动;数学软件matlab

1、引言

大家都知道我们所了解的地球围绕太阳做近似圆周运动的规则运动,当然月球,人造地球卫星也是如此,而我们一直以来所关注的登月工程的探月卫星也是这样一种情况。那月球、探月卫星嫦娥一号相对于太阳是一个怎样的情形,下面通过计算机软件matlab,来模拟一下月球、嫦娥一号相对太阳的运动动画,并描绘出轨迹。

2、原理

假设我们所研究的所有星体处在同一水平面上。地球距太阳的的平均距离为R,月球距地球的平均距离为r1,嫦娥一号距月球的平均距离为r2地球公转角速度w1,月亮公转角速度w2,嫦娥一号绕月亮公转角速度w3。我们从0每隔0.012取一个弧度s1。地球相对太阳转过的角度sita1,月亮相对地球转过的角度sita2,嫦娥一号相对月球转过的角度sita3设开始时间为t=0,然后每隔时间T进行一次取样计算,计算各个星体的的位置坐标。

首先,确定太阳的位置为(00),根据圆周运动的轨迹方程确定地球的运行轨道(R*cos(s1),R*sin(s1)),确定月球围绕地球公转的轨道(R*cos(sita1)+r1*cos(s1),R*sin(sita1)+r1*sin(s1)),再确定画嫦娥一号绕月亮公转轨道(R*cos(sita1)+r1*cos(sita1)+r2*cos(s1),R*sin(sita1)+r1*sin(sita1)+r2*sin(s1)),这样就找出了地球、月球、嫦娥一号的轨迹。分别在matlab中用plot函数画出。

通过一个while循环让相对角度sita 不断随着时间变化而变化,如sita1=sita1+w1*T这样来表示逐次增加使相对角度变化w1*T,这样我们的地球公转,月球公转、嫦娥一号公转的轨道的位置就回随着时间变化而变化起来,我们也可以的到月球相对于太阳的为轨迹坐标(R*cos(sita1)+r1*cos(sita2)R*sin(sita1)+r1*sin(sita2)),嫦娥一号相对于太阳的轨迹坐标(R*cos(sita1)+r1*cos(sita2)+r2*cos(sita3)p3y=R*sin(sita1)+r1*sin(sita2)+r2*sin(sita3))

通过这写轨迹坐标我们就可以演示出星体的运动过程了。

3、源程序

figure('name','嫦娥一号与月亮、地球、太阳关系演示图');%设置标题名字

s1=[0:0.01:2*pi];

hold on;axis equal;%建立坐标系

R=100;%地球到太阳的平均距离

r1=20;%月亮到地球的平均距离

r2=5;%嫦娥一号到月亮的平均距离

w1=1;%设置地球公转角速度

w2=12;%设置月亮公转角速度

w3=96;%设置嫦娥一号绕月亮公转角速度

t=0;%初始时刻为0

T=0.0004;%设置暂停时间

sita1=0;sita2=0;sita3=0;%设置开始它们都在水平线上

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

plot(-170,180,'color','r','marker','.','markersize',40);

text(-160,180,'太阳');%对太阳进行标识

plot(-170,160,'color','g','marker','.','markersize',30);

text(-160,160,'地球');%对地球进行标识

p1=plot(-170,140,'color','b','marker','.','markersize',20);

text(-160,140,'月亮');%对月亮进行标识

p1=plot(-170,120,'color','y','marker','.','markersize',8);

text(-160,120,'嫦娥一号');%对嫦娥一号进行标识

plot(0,0,'color','r','marker','.','markersize',60);%画太阳

plot(R*cos(s1),R*sin(s1),'color','m');%画地球转轨道

l1=plot(R*cos(sita1)+r1*cos(s1),R*sin(sita1)+r1*sin(s1));%画月亮绕地球公转轨道

l2=plot(R*cos(sita1)+r1*cos(sita1)+r2*cos(s1),R*sin(sita1)+r1*sin(sita1)+r2*sin(s1));%画嫦娥一号绕月亮公转轨道

set(gca,'xlim',[-200 200],'ylim',[-200 200]);

p1=plot(R*cos(sita1),R*sin(sita1),'color','g','marker','.','markersize',30);%画地球初始位置

p2=plot(R*cos(sita1)+r1*cos(sita2),R*sin(sita1)+r1*sin(sita2),'color','b','marker','.','markersize',20);%画月球初始位置

p3=plot(R*cos(sita1)+r1*cos(sita2)+r2*cos(sita3),R*sin(sita1)+r1*sin(sita2)+r2*sin(sita3),'color','y','marker','.','markersize',5);%画嫦娥一号初始位置

p2x=R*cos(sita1)+r1*cos(sita2);p2y=R*sin(sita1)+r1*sin(sita2);

p3x=R*cos(sita1)+r1*cos(sita2)+r2*cos(sita3);p3y=R*sin(sita1)+r1*sin(sita2)+r2*sin(sita3);

orbit=line('xdata',p2x,'ydata',p2y,'color','k');%画月球的运动轨迹

orbit1=line('xdata',p3x,'ydata',p3y,'color','r');%画嫦娥一号的运动轨迹

while 1

set(p1,'xdata',R*cos(sita1),'ydata',R*sin(sita1));%设置地球的运动过程

set(l1,'xdata',R*cos(sita1)+r1*cos(s1),'ydata',R*sin(sita1)+r1*sin(s1));%设置月球绕地球的公转轨道的运动过程

ptempx=R*cos(sita1)+r1*cos(sita2);ptempy=R*sin(sita1)+r1*sin(sita2);

set(p2,'xdata',ptempx,'ydata',ptempy);%设置月球的运动过程

set(l2,'xdata',R*cos(sita1)+r1*cos(sita2)+r2*cos(s1),'ydata',R*sin(sita1)+r1*sin(sita2)+r2*sin(s1));%设置嫦娥一号绕月球的公转轨道的运动过程

ptempx1=R*cos(sita1)+r1*cos(sita2)+r2*cos(sita3);ptempy1=R*sin(sita1)+r1*sin(sita2)+r2*sin(sita3);

set(p3,'xdata',ptempx1,'ydata',ptempy1);%设置嫦娥一号的运动过程

p2x=[p2x ptempx];p2y=[p2y ptempy];

p3x=[p3x ptempx1];p3y=[p3y ptempy1];

set(orbit,'xdata',p2x,'ydata',p2y);%设置嫦娥一号的显示过程

set(orbit1,'xdata',p3x,'ydata',p3y);%设置嫦娥一号的显示过程

sita1=sita1+w1*T;%地球相对太阳转过的角度

sita2=sita2+w2*T;%月亮相对地球转过的角度

sita3=sita3+w3*T;%嫦娥一号相对月球转过的角度

pause(T); %暂停一会

drawnow

end

4、演示效果

其中红色曲线代表嫦娥一号轨迹,黑色曲线代表月球轨迹

局部放大图:

其中红色曲线代表嫦娥一号轨迹,黑色曲线代表月球轨迹

matelab星体运动轨迹

相关推荐