轨道动力学第三次团队作业
报告
设计题目 天问一号前往火星的最佳日期
设计要求:
任务:结合本章的知识,给出你认为出发去火星的最佳日期及理由?并对比一下三个火星探测任务, 你计算的日期是否吻合?
拓展(选做):天问一号在10.09进行了深空机动(DSM)。思考分析DSM在地火转移中可能有什么用?( 提示:可以查找Broken Plane(破面)问题相关资料。注意区分深空机动和中途修正。)
问题一
求解技巧一:霍曼转移求解
基本思路:将火星轨道和地球轨道近似看作共面圆轨道,先通过基本
公式 a=(Re+Rm)/2;
T=2*pi/sqrt(mu)*a^(3/2); Te=2*pi/sqrt(mu)*Re^(3/2); Tm=2*pi/sqrt(mu)*Rm^(3/2); fy1=pi-(T/2)/Tm*2*pi;
求得火星探测器出发时火星与地球的黄金夹角fy1,然后通过J0(year, month, day)获得儒略日,然后利用planet_sv(ID, Jd);函数不断的获取不同日期下火星和地球的位置矢量R,通过两位置矢量求得火星和地球之间的夹角,并于黄金夹角fy1对不,但夹角趋近于fy1时便是最佳的出发日期,具体实现的代码如下:
霍曼转移求解的代码
global mu; global fy1;
mu=1.32712*10^11; Re=1.496*10^8; Rm=2.279*10^8; a=(Re+Rm)/2;
T=2*pi/sqrt(mu)*a^(3/2); Te=2*pi/sqrt(mu)*Re^(3/2); Tm=2*pi/sqrt(mu)*Rm^(3/2); fy1=pi-(T/2)/Tm*2*pi;
j0 = J0(2020, 1, 1); %获取2020年1月1日的儒略日 ff=[];
for day=1:366 f=getf(j0); ff=[ff,f]; j0=j0+1; end
figure; clf;
plot(1:366,ff,'r')
set(gca,'XLim',[1,366]); set(gca,'YLim',[-1.5,1.5]);
xlabel('出发的日期/2020年的第n天'); xlabel('相位差与黄金夹角之差');
title('利用霍曼转移求天问一号出发日期'); function f=getf(j0) global fy1; Jd=J0(j0);
[re, ve] = planet_sv(3, Jd); [rm, vm] = planet_sv(4, Jd);
fo=acos((re*rm')/(norm(re)*norm(rm))); %f=abs(fo-fy1);
f=abs(fo-fy1+0.2322);%利用美国在2018年5月5号洞察号火星探测器的数据进行线性修正 end
未修正的结果
大概出发日期为2020年6月7号
发现实际计算结果与实际发射日期相差很大,于是对原系统进行了线性修正,引入常数a,利用美国在2018年5月5号发射火星探测器的日子对a进行正定,求得a=0.2322弧度,得到如下结果
大概日期为2020年7月15号
与阿联酋在2020年7月20号,中国在2020年7月23号,美国在2020年7月30号分别发射火星探测器时间相比,霍曼转移算得得发射日期与之早40天左右,但通过修正得到得数据与之还是比较接近的,与阿联酋的发射日期差了5天,与中国的发射日期差了8天。
求解技巧二:利用兰伯特方法求解
基本思路:由点P1至点P2的飞行时间?t与偏心率无关,仅取决于位置矢量r1和r2,长半轴a,及连接P1和P2两点间的弦长c,利用这性质,先用J0(year, month, day)获得儒略日,然后利用planet_sv(ID, Jd);函数不断的获取不同日期下火星和地球的速度位置矢量V、R,t用1:800天进行遍历,调用兰伯特求解函数 [V1, V2] = lambert(r1, r2, t*24*3600, string);求得出发与到达时的速度V1, V2,与原来
地球轨道和火星轨道的速度做差,得到速度增量,取模求和,得到速度的总增量,速度增量最小时对应得出发日期即为最佳出发日期。 具体是实现方式如下
global mu;
mu=1.327124e11; %太阳的引力常数 vv=[];
year=2020; month=1; day=1;
j0 = J0(year, month, day) %获取2020年1月1日的儒略日 for n=1:366
v=suduzengliang(j0); vv=[vv,v']; j0=j0+1; end
v=(0:1:50);
[X,Y] = meshgrid(1:366,1:800); contour(X,Y,vv,v);
[x,y]=find(vv==min(min(vv) DeltvMin=vv(x,y)
xlabel('出发的日期/2020年的第n天'); xlabel('飞行的日期/天');
title('出发日期与飞行时间等高线图');
function vn=suduzengliang(jd1) vn=[];
for t=1:800 jd2= jd1+t;
[r1, v1] = planet_sv(3, jd1); [r2, v2] = planet_sv(4, jd2); string='pro';
[V1, V2] = lambert(r1, r2, t*24*3600, string); vc=V1-v1;%初始剩余速度
vd=V2-v2;%最终剩余速度
vcc=norm(vc);