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