其本质是利用非线性最小二乘法来进行迭代求解。利用多个时间点的测量来求取轨道初值。因此重点就是要求各个时间点的测量对于轨道初值的导数。根据链式法则,这一导数又被分成两部分,即各时间点的测量值对于测量时间点的轨道的雅各比矩阵,以及测量时间点的轨道对于初始轨道的雅各比矩阵。前者是测量雅各比,后者即状态转移矩阵。即
H
k
=
∂
h
k
∂
x
k
Φ
(
t
k
,
t
0
)
(1)
H_k=\frac{\partial \mathbf{h}_k}{\partial \mathbf{x}_k} \Phi\left(t_k, t_{0}\right)\tag{1}
Hk=∂xk∂hkΦ(tk,t0)(1)
对于轨道问题, 状态转移矩阵有解析表达式,但较为复杂。这里采用近似处理办法:
- 当前估计值 x 0 x_0 x0利用轨道动力学外推得到 x 1 x_1 x1, x 2 x_2 x2, x 3 x_3 x3… x m x_m xm。它们都是 x 0 x_0 x0的函数。
- t 1 t_1 t1时刻, F 1 ≡ ∂ f ∂ x ∣ x 1 F_1 \equiv \frac{\partial \mathbf{f}}{\partial \mathbf{x}}\big|_{x_1} F1≡∂x∂f∣∣x1,状态转移矩阵近似值为 Φ ( t 1 , t 0 ) ≈ e x p ( F 1 ( t 1 − t 0 ) ) \Phi\left(t_1, t_{0}\right)\approx exp(F_1(t_1-t_0)) Φ(t1,t0)≈exp(F1(t1−t0))。这种处理等同于将 F 1 F_1 F1在 t 0 t_0 t0到 t 1 t_1 t1的时间段内看作常数。
- t 2 t_2 t2时刻, F 2 ≡ ∂ f ∂ x ∣ x 2 F_2 \equiv \frac{\partial \mathbf{f}}{\partial \mathbf{x}}\big|_{x_2} F2≡∂x∂f∣∣x2,状态转移矩阵近似值为 Φ ( t 2 , t 1 ) ≈ e x p ( F 2 ( t 2 − t 1 ) ) \Phi\left(t_2, t_{1}\right)\approx exp(F_2(t_2-t_1)) Φ(t2,t1)≈exp(F2(t2−t1))。这种处理等同于将 F 2 F_2 F2在 t 1 t_1 t1到 t 2 t_2 t2的时间段内看作常数。则根据状态转移矩阵性质,有 Φ ( t 2 , t 0 ) = Φ ( t 2 , t 1 ) Φ ( t 1 , t 0 ) \Phi\left(t_2, t_{0}\right)=\Phi\left(t_2, t_{1}\right)\Phi\left(t_1, t_{0}\right) Φ(t2,t0)=Φ(t2,t1)Φ(t1,t0)。以此类推,获得所有时刻的状态转移矩阵 Φ ( t m , t 0 ) \Phi\left(t_m, t_{0}\right) Φ(tm,t0)
- 利用 x 1 x_1 x1, x 2 x_2 x2, x 3 x_3 x3… x m x_m xm计算各测量时刻的残差 e 1 e_1 e1, e 2 e_2 e2… e m e_m em以及利用公式(1)求取 H 1 H_1 H1, H 2 H_2 H2… H m H_m Hm。
- 进行迭代更新,获得新的估计值 x 0 x_0 x0。重复步骤(1),直到某次更新前后的误差小于某个设定值。
流程图如下:
心得,评注
1.length(x)
获得矩阵x的行数与列数中较大的那个。
2.y=zeros(m*n,1); y(:)=x;
是把m*n维矩阵按列叠起来形成的列向量赋给y。y记得要初始化。