轨道六根数 matlab,轨道六根数

本文介绍了轨道六根数在描述二体问题中的作用,包括半长轴、离心率、轨道倾角等,并讨论了椭圆、双曲线和抛物线轨道的不同情况。通过数学公式展示了如何使用轨道六根数转换为位置速度矢量,以及如何从位置速度矢量反推轨道六根数。同时提供了一个Matlab函数,用于实现轨道六根数与位置速度矢量之间的相互转换。

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

在二体问题中,轨道根数(orbital factors)是描述物体运动轨迹的简便形式。三维空间中,唯一确定物体轨迹需要六个参数,如位置矢量和速度矢量(均为三维)可共同确定物体轨迹。此外,用六个轨道根数也可描述它。通常的轨道六根数指的是:半长轴$a$、离心率$e$、轨道倾角$i$、近心点辐角$\omega$、升交点经度$\Omega$和真近点角$\varphi$。经过三角函数运算,它们能表示出物体所处特定位置和速度。

轨道六根数如图所示。

83be25ef77b3ca0d01f428ea1c32a0ff.png

值得注意的是,椭圆和双曲线轨道拥有完整的六根数。而抛物线轨道中不存在半长轴$a$,而用半通径$p$替代。且抛物线离心率$e$恒为1,故仅需五个轨道根数来描述抛物线轨道。

而在圆轨道中,描述轨道仅需四个参数,一般将真近点角$\varphi$与近心点辐角$\omega$合并为纬度辐角$u$,同时离心率$e$为0,矢量不再有意义。故只需要四个。

轨道六根数转位置速度矢量

轨道坐标系经过三次方向余弦矩阵变换即可变为中心天体惯性系。第一次变换时,轨道平面绕参考坐标系z轴转过$-\Omega$,升交线与参考坐标系x轴重合;第二次变换时,轨道平面绕参考坐标系x轴转过$-i$,轨道平面正法向与参考坐标系z轴重合;第三次变换时,轨道平面绕参考坐标系z轴转过$-\omega$,离心率矢量与参考坐标系x轴重合;最终,在参考坐标系下,物体坐标为${\left[ {r\cos \varphi ,r\sin \varphi ,0} \right]^\prime }$。整个过程为欧拉角序列3-1-3。

同时,注意到位置矢量的大小仅是半通径$p$和真近点角的函数,而半通径可由半长轴和离心率求出,或直接给出:

$$r = \frac{p}{1 + e\cos \varphi }$$

最终有:

$$\hat r = {R_3}( - \Omega ){R_1}( - i){R_3}( - \omega )\left[ {\begin{array}{*{20}{c}}

{r\cos \varphi }\\

{r\sin \varphi }\\

0

\end{array}} \right]$$

$$\hat r = \frac{p}{1 + e\cos \varphi }\left[ {\begin{array}{*{20}{c}}

{\cos \Omega \cos (\omega + \varphi ) - \sin \Omega \sin (\omega + \varphi )\cos i}\\

{\sin \Omega \cos (\omega + \varphi ) + \cos \Omega \sin (\omega + \varphi )\cos i}\\

{\sin (\omega + \varphi )\sin i}

\end{array}} \right]$$

由于运动中除了$\varphi$,其余轨道根数均不变,且轨道六根数可唯一确定位置矢量,因此位置矢量是$\varphi$的函数。从而有:

$$\hat v = \frac{d\hat r}{d\varphi }\frac{d\varphi }{dt}$$

同时注意到真近点角的微分为:

\[\frac{d\varphi }{dt} = \frac{\sqrt \mu }{p^{3/2}}{(1 + e\cos \varphi )^2}\]

其中$\mu$是中心天体引力常数。

最后,有:

$$\hat v = \sqrt {\frac{\mu }{p}} \left[ {\begin{array}{*{20}{c}}

{ - \cos \Omega (\sin (\omega + \varphi ) + e\sin \omega ) - \sin \Omega (\cos (\omega + \varphi ) + e\cos \omega )\cos i}\\

{ - \sin \Omega (\sin (\omega + \varphi ) + e\sin \omega ) + \cos \Omega (\cos (\omega + \varphi ) + e\cos \omega )\cos i}\\

{(\cos (\omega + \varphi ) + e\cos \omega )\sin i}

\end{array}} \right]$$

位置速度矢量转轨道六根数

位置速度矢量转轨道六根数的过程是依照轨道六根数的定义进行的。

首先求半通径$a$。若物体的速度大小为$v$,离中心天体的距离为$r$,则:

\[a = {\left( {\frac{2}{r} - \frac{v^2}{\mu }} \right)^{ - 1}}\]

$a$应为有限正数。若求出$a$为无穷,则表明轨道为抛物线,可忽略此步;若求出$a$为负,则表明轨道为双曲线,需改变$a$的符号。

进一步求离心率矢量$\hat e$:

$$\hat e = \frac{1}{\mu }\left[ {\left( {v^2} - \frac{\mu }{r} \right)\hat r - \left( {\hat r \cdot \hat v} \right)\hat v} \right]$$

轨道六根数中的离心率为离心率标量,即$\hat e$的模。若$e$为零向量,则说明轨道为圆。

再计算角动量$\hat h$:

$$\hat h = \hat r \times \hat v$$

若已经认定轨道为抛物线,则依据:

\[p = \frac{h^2}{\mu }\]

求出抛物线的轨道根数之一,即半通径。

已知角动量和z轴单位矢量$\hat z$,轨道倾角$i$即可求:

$$\cos i = \frac{\hat z \cdot \hat h}{h}$$

再计算升交线矢量${\hat n}$:

$$\hat n = \hat z \times \hat h$$

近心点辐角$\omega$可由此计算:

$$\cos \omega = \frac{\hat n \cdot \hat e}{ne}$$

如果$\hat z \cdot \hat e > 0$,即离心率矢量与z轴正半轴夹角为锐角,那么$\omega < {180^ \circ }$。

升交点经度$\Omega$也可算出:

$$\cos \Omega = \frac{\hat n \cdot \hat x}{n}$$

若$\hat y \cdot \hat n > 0$,即升交线与y轴交角为锐角,则$\Omega < {180^ \circ }$。

最后是真近点角$\varphi$:

$$\cos \varphi = \frac{\hat e \cdot \hat r}{er}$$

如果$\hat r \cdot \hat v > 0$,即位置矢量与速度矢量之间夹角为锐角,则$\varphi < {180^ \circ }$。

由此,椭圆、抛物线或双曲线的轨道根数全部求出。

若轨道在离心率计算时已被认定为圆,则不必计算真近点角$\varphi$与近心点辐角$\omega$,而依照下式计算纬度辐角$u$:

\[\cos u = \frac{\hat n \cdot \hat r}{nr}\]

如果$\hat r \cdot \hat z > 0$,即物体在xy平面上方,则$u < {180^ \circ }$。

其他表示

在一般轨道中,除了上述的六个轨道根数的组合,轨道六根数还有其他组合方式。例如,真近点角$\varphi$可换为平近点角$M$或平经度$L$;升交点经度$\Omega$或近心点辐角$\omega$可换为近心点经度${\tilde \omega }$等。

附:Matlab实现互化

轨道六根数转位置速度矢量

function [Coordinate,V]=Classic_Coordinate(data,miu)

%/* Classic_Coordinate: convert orbit factors to velocity and location

% miu: GM of center body

% data: For ellipse and hyperbola: a;e;i;w;W;fai of transfer orbit

% %a:semi-major axis; e:eccentricity; i:inclination;

% %w:argument of periapsis; W:longitude of ascending node; fai:true anomaly.

% For parabola: p;i;w;W;fai of transfer orbit

% %p:semi latus rectum; i:inclination; w:argument of periapsis;

% %W:longitude of ascending node; fai:true anomaly.

% For circle: a;i;u;W; of transfer orbit

% %a:radius; i:inclination; u:argument of latitude;

% %W:longitude of ascending node;

% Coordinate:location

% V:velocity */

if length(data)==6 % ellipse and hyperbola

a=data(1);

e=data(2);

i=data(3);

w=data(4);

W=data(5);

fai=data(6);

p=abs(a*(1-e^2));

u=w+fai;

elseif length(data)==5 % parabola

p=data(1);

i=data(2);

w=data(3);

W=data(4);

fai=data(5);

u=w+fai;

else %circle

p=data(1);

e=0;

i=data(2);

w=0;

u=data(3);

W=data(4);

fai=0;

end

Coordinate=p/(1+e*cos(fai))*[cos(W)*cos(u)-sin(W)*sin(u)*...

cos(i) sin(W)*cos(u)+cos(W)*sin(u)*cos(i) sin(i)*sin(u)]';

V=(miu/p)^(0.5)*[-cos(W)*(sin(u)+e*sin(w))-sin(W)*(cos(u)...

+e*cos(w))*cos(i) -sin(W)*(sin(u)+e*sin(w))+cos(W)*(cos(u)+...

e*cos(w))*cos(i) sin(i)*(cos(u)+e*cos(w))]';

end

位置速度矢量转轨道六根数

function [data]=Coordinate_Classic(R,V,miu)

%/* Classic_Coordinate: convert orbit factors to velocity and location

% miu: GM of center body

% data: For ellipse and hyperbola: a;e;i;w;W;fai of transfer orbit

% %a:semi-major axis; e:eccentricity; i:inclination;

% %w:argument of periapsis; W:longitude of ascending node; fai:true anomaly.

% For parabola: p;i;w;W;fai of transfer orbit

% %p:semi latus rectum; i:inclination; w:argument of periapsis;

% %W:longitude of ascending node; fai:true anomaly.

% For circle: a;i;u;W; of transfer orbit

% %a:radius; i:inclination; u:argument of latitude;

% %W:longitude of ascending node;

% Coordinate:location

% V:velocity */

r=sqrt(dot(R,R));

if 2/r-dot(V,V)/miu~=0

a=1/abs(2/r-dot(V,V)/miu);

end

E=(dot(V,V)/miu-1/r)*R-dot(R,V)/miu*V;

e=sqrt(dot(E,E));

H=cross(R,V);

h=sqrt(dot(H,H));

p=h^2/miu;

Z=[0 ;0 ;1];

X=[1 ;0 ;0];

Y=[0 ;1 ;0];

N=cross(Z,H);

n=sqrt(dot(N,N));

i=acos(dot(Z,H)/h);

if e~=0

w=acos(dot(N,E)/n/e);

if dot(Z,E)<0

w=2*pi-w;

end

else

u=acos(dot(N,R)/n/r);

if dot(R,Z)<0

u=2*pi-u;

end

end

W=acos(dot(X,N)/n);

if dot(Y,N)<0

W=2*pi-W;

end

if e~=0

fai=acos(dot(E,R)/e/r);

if dot(R,V)<0

fai=2*pi-fai;

end

end

if 2/r-dot(V,V)/miu~=0

if e~=0

data=[a;e;i;w;W;fai];

else

data=[a;i;u;W];

end

else

data=[p;i;w;W;fai];

end

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值