content(app-G): 明确位置速度混合协议与方向符号

区分候选角导数和位置轨迹的时间导数,给出频移近似误差。
明确保留混合协议及统一可微轨迹时各接口的修改条件。
补充独立差分、固定节点 OLS 与方向符号检查,全部通过。
XeLaTeX 多遍与引用检查通过;PDF 转换受外部进程文件占用阻塞。
This commit is contained in:
2026-10-05 22:03:36 +08:00
parent 7215f15f45
commit 175389b149
2 changed files with 139 additions and 2 deletions
+56
View File
@@ -74,6 +74,35 @@ def geometry(x, t, ell):
return w, W, wd, WD, b, bx, bd, bdx return w, W, wd, WD, b, bx, bd, bdx
def mixed_motion(x, t, ell):
"""Synthetic non-spin rotation: deliberately not an astronomical model."""
p0, P0 = intersection(x)
a, k = 7.292115e-5*t, 3e-5
z = np.array([[np.cos(a), -np.sin(a), 0.],
[np.sin(a), np.cos(a), 0.], [0., 0., 1.]])
a = k*t
q = np.array([[1., 0., 0.], [0., np.cos(a), -np.sin(a)],
[0., np.sin(a), np.cos(a)]])
generator = np.array([[0., 0., 0.], [0., 0., -k], [0., k, 0.]])
B = z@q
Bd = SPIN@B + B@generator
C, Cd = SPIN@B, SPIN@Bd
p, pd, vu = B@p0, Bd@p0, C@p0
s = SATELLITES[ell] + t*VELOCITIES[ell] + .5*t*t*ACCELERATIONS[ell]
vs = VELOCITIES[ell] + t*ACCELERATIONS[ell]
r = np.linalg.norm(s-p)
w = (s-p)/r
S = np.eye(3)-np.outer(w, w)
wd = S@(vs-pd)/r
proxy = S@(vs-vu)/r
W = -S@B@P0/r
b = -(vs-vu)@w/WAVELENGTH
bg = -(vs-pd)@w/WAVELENGTH
bd = -((ACCELERATIONS[ell]-Cd@p0)@w + (vs-vu)@wd)/WAVELENGTH
bx = -(-w@C@P0+(vs-vu)@W)/WAVELENGTH
return p, pd, vu, w, wd, proxy, b, bg, bd, bx
def coefficients(x, ell): def coefficients(x, ell):
data = [geometry(x, t, ell) for t in TIMES] data = [geometry(x, t, ell) for t in TIMES]
ref = [geometry(x, t, 0) for t in TIMES] ref = [geometry(x, t, 0) for t in TIMES]
@@ -168,6 +197,33 @@ def main():
Tref[:2, :2] = finite_difference(lambda x: bearing(intersection(x)[0], SATELLITES[1]), x) Tref[:2, :2] = finite_difference(lambda x: bearing(intersection(x)[0], SATELLITES[1]), x)
Tref[2:, :2] = Cx Tref[2:, :2] = Cx
check("reference-change full Jacobian", Tref, finite_difference(switch, z), 2e-6) check("reference-change full Jacobian", Tref, finite_difference(switch, z), 2e-6)
for ell in range(2):
p, pd, vu, w, wd, proxy, b, bg, bd, bx = mixed_motion(x, .41, ell)
step = 1e-3
check("mixed position velocity", pd,
(mixed_motion(x, .41+step, ell)[0]-mixed_motion(x, .41-step, ell)[0])/(2*step),
2e-6)
check("mixed true LOS time derivative", wd,
(mixed_motion(x, .41+step, ell)[3]-mixed_motion(x, .41-step, ell)[3])/(2*step))
check("mixed node Doppler Jacobian", bx,
finite_difference(lambda x: mixed_motion(x, .41, ell)[6], x))
check("mixed Doppler time derivative", bd,
(mixed_motion(x, .41+step, ell)[6]-mixed_motion(x, .41-step, ell)[6])/(2*step))
check("mixed Doppler discrepancy", b-bg, (vu-pd)@w/WAVELENGTH)
check("mixed proxy LOS discrepancy", proxy-wd,
-(np.eye(3)-np.outer(w, w))@(vu-pd)/np.linalg.norm(
SATELLITES[ell]+.41*VELOCITIES[ell]+.5*.41**2*ACCELERATIONS[ell]-p))
assert np.linalg.norm(vu-pd) > 1, "Fixture must expose the mixed protocol"
e = -w
check("orientation steering identity",
np.exp(-2j*np.pi*ARRAY@w/WAVELENGTH),
np.exp(2j*np.pi*ARRAY@e/WAVELENGTH))
check("orientation Doppler identity", b, (VELOCITIES[ell]+.41*ACCELERATIONS[ell]-vu)@e/WAVELENGTH)
mixed_coeff = lambda x: np.linalg.lstsq(DESIGN, [
mixed_motion(x, t, 1)[6]-mixed_motion(x, t, 0)[6] for t in TIMES], rcond=None)[0]
mixed_jac = np.linalg.lstsq(DESIGN, [
mixed_motion(x, t, 1)[9]-mixed_motion(x, t, 0)[9] for t in TIMES], rcond=None)[0]
check("mixed fixed-design OLS Jacobian", mixed_jac, finite_difference(mixed_coeff, x))
print("PASS: synthetic local formula checks; code-side geometry and CP/IP acceptance still required.") print("PASS: synthetic local formula checks; code-side geometry and CP/IP acceptance still required.")
+83 -2
View File
@@ -290,7 +290,67 @@ Doppler 部分,由 $\nu_\ell=\nu_{\mathrm{ref}}+\Delta\nu_\ell(\mathbf p)$ 与
% %
这里 $\mathbf R(t)$ 为地固系到惯性系的已知旋转;导数按物理秒计算。$\mathbf V_\xi$、$\mathbf A_\xi$ 分别是卫星--源相对速度与相对加速度对两角的 Jacobian,卫星星历不随候选角变化。匀速自转近似下 $\dot{\mathbf B}=\boldsymbol\Omega_{\mathrm E}\mathbf B$、$\ddot{\mathbf B}=\boldsymbol\Omega_{\mathrm E}^2\mathbf B$。若选用惯性静止源特例,则令 $\mathbf B=\mathbf I_3$ 且两阶导数为零;两种源运动约定须在生成与估计中一致。 这里 $\mathbf R(t)$ 为地固系到惯性系的已知旋转;导数按物理秒计算。$\mathbf V_\xi$、$\mathbf A_\xi$ 分别是卫星--源相对速度与相对加速度对两角的 Jacobian,卫星星历不随候选角变化。匀速自转近似下 $\dot{\mathbf B}=\boldsymbol\Omega_{\mathrm E}\mathbf B$、$\ddot{\mathbf B}=\boldsymbol\Omega_{\mathrm E}^2\mathbf B$。若选用惯性静止源特例,则令 $\mathbf B=\mathbf I_3$ 且两阶导数为零;两种源运动约定须在生成与估计中一致。
令 $\mathbf v_\ell^{\mathrm{rel}}=\mathbf v_\ell-\mathbf v_u$、$\mathbf a_\ell^{\mathrm{rel}}=\mathbf a_\ell^{\mathrm{orb}}-\mathbf a_u$。各星传播方向、时间导数与候选角导数分别为 \paragraph{位置映射与速度近似分别给定时}
部分实现采用逐历元坐标旋转给出位置,同时另用简化自转速度给出 Doppler。可将这一确定性协议写为
%
\begin{equation}
\label{eq:G_bearing_mixed_motion}
\begin{aligned}
\mathbf p(t)&=\mathbf B(t)\mathbf p_0,\qquad
\widetilde{\mathbf v}_u(t)=\mathbf C(t)\mathbf p_0,\\
\frac{\partial\mathbf p}{\partial\boldsymbol\xi^\Tran}
&=\mathbf B(t)\mathbf P_\xi,\qquad
\frac{\partial\widetilde{\mathbf v}_u}{\partial\boldsymbol\xi^\Tran}
=\mathbf C(t)\mathbf P_\xi,\\
\boldsymbol\epsilon_v(t)
&=\widetilde{\mathbf v}_u(t)-\dot{\mathbf p}(t)
=(\mathbf C(t)-\dot{\mathbf B}(t))\mathbf p_0 .
\end{aligned}
\end{equation}
%
这里 $\mathbf B(t)$ 与 $\mathbf C(t)$ 为已知且不随候选角变化的矩阵。例如,$\widetilde{\mathbf v}_u=\boldsymbol\Omega_{\mathrm E}\mathbf p$ 对应 $\mathbf C=\boldsymbol\Omega_{\mathrm E}\mathbf B$。只有当 $\dot{\mathbf B}=\boldsymbol\Omega_{\mathrm E}\mathbf B$ 时,它才是该位置轨迹的精确速度;包含其他时间变化旋转的坐标转换须使用其实际导数检查这一等式。候选角导数与时间导数是不同操作:即使 $\mathbf C\ne\dot{\mathbf B}$,\eqref{eq:G_bearing_mixed_motion} 的两个角 Jacobian 仍分别成立。
令 $\mathbf v_\ell^{\,g}=\mathbf v_\ell-\dot{\mathbf B}\mathbf p_0$ 为位置轨迹的实际相对速度,$\widetilde{\mathbf v}_\ell^{\mathrm{rel}}=\mathbf v_\ell-\mathbf C\mathbf p_0$ 为 Doppler 近似中采用的相对速度。沿用逐历元位置计算的 LOS,有
%
\begin{equation}
\label{eq:G_bearing_mixed_time_derivatives}
\begin{aligned}
\dot{\mathbf w}_\ell
&=\frac{\mathbf S_\ell\mathbf v_\ell^{\,g}}{r_\ell},\\
\widetilde b_\ell
&=-\frac{(\widetilde{\mathbf v}_\ell^{\mathrm{rel}})^\Tran\mathbf w_\ell}
{\lambda_{\mathrm c}},\\
\frac{\mathrm d\widetilde b_\ell}{\mathrm dt}
&=-\frac{
(\mathbf a_\ell^{\mathrm{orb}}-\dot{\mathbf C}\mathbf p_0)^\Tran\mathbf w_\ell
+(\widetilde{\mathbf v}_\ell^{\mathrm{rel}})^\Tran\dot{\mathbf w}_\ell}
{\lambda_{\mathrm c}},\\
\frac{\partial\widetilde b_\ell}{\partial\boldsymbol\xi^\Tran}
&=-\frac{-\mathbf w_\ell^\Tran\mathbf C\mathbf P_\xi+
(\widetilde{\mathbf v}_\ell^{\mathrm{rel}})^\Tran\mathbf W_\ell}
{\lambda_{\mathrm c}}.
\end{aligned}
\end{equation}
%
其中 $\mathbf S_\ell$、$\mathbf W_\ell$ 的定义见 \eqref{eq:G_bearing_los_derivatives}。若 $\mathbf C=\boldsymbol\Omega_{\mathrm E}\mathbf B$,则 $\dot{\mathbf C}=\dot{\boldsymbol\Omega}_{\mathrm E}\mathbf B+\boldsymbol\Omega_{\mathrm E}\dot{\mathbf B}$,一般不能换成 $\boldsymbol\Omega_{\mathrm E}^2\mathbf B$。时间导数第一行使用实际位置轨迹的速度;将 $\widetilde{\mathbf v}_\ell^{\mathrm{rel}}$ 代入所得量只是代理 LOS rate,与真实导数的差为 $-\mathbf S_\ell\boldsymbol\epsilon_v/r_\ell$。角度相关的时间导数可直接对 \eqref{eq:G_bearing_mixed_time_derivatives} 求导,使用 $\mathbf B\mathbf P_\xi$、$\dot{\mathbf B}\mathbf P_\xi$、$\mathbf C\mathbf P_\xi$ 和 $\dot{\mathbf C}\mathbf P_\xi$,不混用两种速度。
保留该近似时,\eqref{eq:G_bearing_window_ols} 的节点向量改用 $\widetilde b_\ell-\widetilde b_r$,节点 Jacobian 改用 \eqref{eq:G_bearing_mixed_time_derivatives} 的最后一行,再乘固定的 $\mathbf X^\dagger$。这不要求 $\mathbf C=\dot{\mathbf B}$,也不要求计算瞬时 rate;OLS rate 是所选节点频率直线的斜率。由同一节点协议生成、拟合和求导的均值模型可在数学上自洽,其参考 bearing 与经纬度的坐标变换、实信息矩阵和干扰消元仍成立。物理上,该频移近似偏离位置轨迹的距离变化率,须另行量化:
%
\begin{equation}
\label{eq:G_bearing_motion_discrepancy}
\widetilde b_\ell-b_\ell^{\,g}
=\frac{\boldsymbol\epsilon_v^\Tran\mathbf w_\ell}{\lambda_{\mathrm c}},
\qquad
(\widetilde b_\ell-\widetilde b_r)-(b_\ell^{\,g}-b_r^{\,g})
=\frac{\boldsymbol\epsilon_v^\Tran(\mathbf w_\ell-\mathbf w_r)}
{\lambda_{\mathrm c}}.
\end{equation}
%
有限距离的不同视线使该误差通常不能全部吸收到公共参考频移。数值检查应分别差分位置轨迹、近似速度和节点 Doppler:前者用于检验 LOS 时间导数,后两者用于检验近似 Doppler 的角导数及瞬时导数。微分步长采用物理秒或弧度,须检查步长收敛,并区分解析旋转、历元插值与时间转换在工作点的可微性。
若要求同一个可微物理源轨迹,可选择原有 $\mathbf B(t)$ 并令 $\mathbf C=\dot{\mathbf B}$,或明确采用匀速自转近似 $\mathbf B(t)=\exp((t-t_0)\boldsymbol\Omega_{\mathrm E})$。前者更新源速度和加速度,后者同时更新逐历元源位置;两者均不增加未知源运动参数。生成、候选、OLS 节点与 Jacobian、瞬时 rate、信息矩阵及高保真积分相位须使用同一选择,重建受影响的参考系数与目标真值。仅改 CRB 侧速度导数会破坏同模关系;这种物理协议更新也不再是旧样本的纯坐标转换。是否更新生产协议由场景与近似误差的证据决定,局部自洽性检查本身不要求静默更换协议。
以下 LOS 与 Doppler rate 公式采用 \eqref{eq:G_bearing_source_motion} 的一致轨迹;保留分别给定的位置和速度时,使用 \eqref{eq:G_bearing_mixed_time_derivatives}。令 $\mathbf v_\ell^{\mathrm{rel}}=\mathbf v_\ell-\mathbf v_u$、$\mathbf a_\ell^{\mathrm{rel}}=\mathbf a_\ell^{\mathrm{orb}}-\mathbf a_u$。各星传播方向、时间导数与候选角导数分别为
% %
\begin{equation} \begin{equation}
\label{eq:G_bearing_los_derivatives} \label{eq:G_bearing_los_derivatives}
@@ -327,6 +387,27 @@ Doppler 部分,由 $\nu_\ell=\nu_{\mathrm{ref}}+\Delta\nu_\ell(\mathbf p)$ 与
% %
几何 Doppler 的时间计算仍保留实际 LOS 变化。空间导向变化很小并不足以证明 Doppler rate 中的 LOS 导数项可忽略。 几何 Doppler 的时间计算仍保留实际 LOS 变化。空间导向变化很小并不足以证明 Doppler rate 中的 LOS 导数项可忽略。
\paragraph{来向、传播方向与空间相位符号}
在第 $\ell$ 颗卫星定义星到源的来向 $\mathbf e_\ell=-\mathbf w_\ell$,本地方向由同一姿态旋转给出 $\mathbf e_\ell^{\mathrm{loc}}=\boldsymbol\Omega_\ell^\Tran\mathbf e_\ell$、$\mathbf w_\ell^{\mathrm{loc}}=-\mathbf e_\ell^{\mathrm{loc}}$。沿用时间相位 $e^{j2\pi f t}$ 的约定,本小节模板满足
%
\begin{equation}
\label{eq:G_bearing_orientation_signs}
\begin{aligned}
{}[\mathbf a_\ell]_m
&=\exp\!\left(-j\frac{2\pi}{\lambda_{\mathrm c}}
(\mathbf r_{\ell,m}^{\mathrm{loc}})^\Tran\mathbf w_\ell^{\mathrm{loc}}\right)
=\exp\!\left(+j\frac{2\pi}{\lambda_{\mathrm c}}
(\mathbf r_{\ell,m}^{\mathrm{loc}})^\Tran\mathbf e_\ell^{\mathrm{loc}}\right),\\
b_\ell
&=-\frac{(\mathbf v_\ell^{\mathrm{rel}})^\Tran\mathbf w_\ell}{\lambda_{\mathrm c}}
=+\frac{(\mathbf v_\ell^{\mathrm{rel}})^\Tran\mathbf e_\ell}{\lambda_{\mathrm c}} .
\end{aligned}
\end{equation}
%
同样的方向替换适用于 \eqref{eq:G_bearing_mixed_time_derivatives} 的近似相对速度。对应角坐标可写为 $\alpha_w=\operatorname{wrap}(\alpha_e+\pi)$、$\beta_w=-\beta_e$;空间方向 Jacobian 同时满足 $\partial\mathbf w_\ell/\partial\boldsymbol\xi^\Tran=-\partial\mathbf e_\ell/\partial\boldsymbol\xi^\Tran$。因此,改用相反方向作为模板输入时,空间指数符号和 Doppler 投影符号须配套变换。两种输入约定表示同一个模板,而不是改变接收信号。
实际阵列实现可能采用不同的阵元位移定义、基带共轭约定或角输入约定,应从其模板定义确定对应关系。在真值及有效域内候选点,分别比较由 $\mathbf w_\ell$ 和 $-\mathbf w_\ell$ 两种写法得到的 steering 与均值,并在固定增益/相位后检查一致性;还应核对角导数和随时间变化的 Doppler 相位。单独翻转方向或单独翻转 Doppler 不能据此判定等价,实际空间指数也不能仅由函数名或 bearing 朝向猜测。
\paragraph{有限距离 Doppler、rate 与窗口拟合} \paragraph{有限距离 Doppler、rate 与窗口拟合}
沿用 \eqref{eq:A6_latlon_doppler_jac} 的传播方向与 Doppler 符号,几何频移 $b_\ell$(Hz)及其瞬时 rate(Hz/s)为 沿用 \eqref{eq:A6_latlon_doppler_jac} 的传播方向与 Doppler 符号,几何频移 $b_\ell$(Hz)及其瞬时 rate(Hz/s)为
% %
@@ -355,7 +436,7 @@ Doppler 部分,由 $\nu_\ell=\nu_{\mathrm{ref}}+\Delta\nu_\ell(\mathbf p)$ 与
\begin{equation} \begin{equation}
\label{eq:G_bearing_window_ols} \label{eq:G_bearing_window_ols}
\begin{aligned} \begin{aligned}
[\mathbf d_\ell]_p&=b_\ell(t_0+s_p)-b_r(t_0+s_p),\\ {}[\mathbf d_\ell]_p&=b_\ell(t_0+s_p)-b_r(t_0+s_p),\\
\mathbf c_\ell&=\begin{bmatrix}\Delta f_\ell\\\Delta\dot f_\ell\end{bmatrix} \mathbf c_\ell&=\begin{bmatrix}\Delta f_\ell\\\Delta\dot f_\ell\end{bmatrix}
=\mathbf X^\dagger\mathbf d_\ell,\\ =\mathbf X^\dagger\mathbf d_\ell,\\
\frac{\partial\mathbf c_\ell}{\partial\boldsymbol\xi^\Tran} \frac{\partial\mathbf c_\ell}{\partial\boldsymbol\xi^\Tran}