content(app-H): 补全联合扰动吸收与跨用户传播

在固定权重摘要模型中先消位置再解共享时间戳,保留时延与 Doppler 交互。
给出吸收及传播的条件、同构用户稀释规律与共识的条件性区分度和盲区。
补全符号索引与确定性自检,保持自由三维位置及地固运动导数。

NumPy 代数自检通过,几何 Jacobian 相对误差 1.03e-9。
SyncTeX 多遍编译通过,无断引用、新增缺字或溢出。
未运行捕获或定位 Monte Carlo,未验证实际污染池或非线性增益。
This commit is contained in:
2026-10-12 13:25:17 +08:00
parent 936c1d9f62
commit a2713e80cf
3 changed files with 428 additions and 2 deletions
+151
View File
@@ -0,0 +1,151 @@
"""Appendix H deterministic algebra checks; no acquisition, localization MC or orbit acceptance.
Run: python check_shared_timestamp_poisoning.py. Tolerance: 1e-10 unless stated.
"""
import numpy as np
def check(actual, expected):
np.testing.assert_allclose(actual, expected, atol=1e-10, rtol=1e-10)
def predict(blocks, offsets, errors):
sizes = [len(a) for a in blocks]
A = np.zeros((sum(sizes), 3*len(blocks)))
P = np.eye(sum(sizes))
start = 0
for k, a in enumerate(blocks):
rows = slice(start, start+len(a))
assert np.linalg.matrix_rank(a) == 3
A[rows, 3*k:3*k+3] = a
P[rows, rows] -= a@np.linalg.pinv(a)
start += len(a)
B, e = np.vstack(offsets), np.concatenate(errors)
Z, b = P@B, P@e
assert np.linalg.matrix_rank(Z, tol=1e-10) == B.shape[1]
delta = np.linalg.lstsq(Z, b, rcond=None)[0]
positions = np.linalg.lstsq(A, e-B@delta, rcond=None)[0]
r = e-A@positions-B@delta
D = np.column_stack((A, B))
direct = np.linalg.lstsq(D, e, rcond=None)[0]
check(np.r_[positions, delta], direct)
check(r, P@(e-B@delta))
S, gamma = Z.T@Z, Z.T@b
check(delta, np.linalg.solve(S, gamma))
check(b@b-r@r, gamma@np.linalg.solve(S, gamma))
return positions.reshape(-1, 3), delta, r, D, P, B, e
def main():
# Synthetic local summary blocks: delay first, then Doppler and angles.
a = np.array([[1., .2, 0.], [.3, -.4, .2], [.4, 1., .1], [-.2, .3, 1.],
[1., 0., 0.], [0., 1., 0.], [0., 0., 1.], [.2, .1, .7]])
b = np.vstack((np.eye(2), np.zeros((6, 2))))
e = np.array([1., -.4, .7, -.2, 0., 0., 0., 0.])
p0, d0, _, _, _, _, _ = predict([a], [b], [e])
x, delta, r, D, P, B, error = predict([a]*4, [b]*4, [e]+[np.zeros(8)]*3)
check(delta, d0/4)
clean_x = -np.linalg.pinv(a)@b@d0/4
check(x[1:], np.tile(clean_x, (3, 1)))
check(x[0], np.linalg.pinv(a)@e+clean_x)
pa = P[:8, :8]
L = b.T@pa[:, :4]
check(L[:, 2:], -b.T@a@np.linalg.pinv(a)[:, 2:4])
assert np.linalg.norm(L[:, 2:]) > .01, "Doppler must expose indirect offset coupling"
gain1 = np.linalg.norm(pa@e)**2-np.linalg.norm(predict([a], [b], [e])[2])**2
check(np.linalg.norm(P@error)**2-r@r, gain1/4)
S = B.T@P@B
metric = L.T@np.linalg.solve(S, L)
cross = 2*e[:2]@metric[:2, 2:]@e[2:4]
check(e[:2]@metric[:2, :2]@e[:2]+cross+e[2:4]@metric[2:, 2:]@e[2:4], gain1/4)
assert abs(cross) > .01, "Joint error must expose a nonzero cross term"
common = np.array([.4, -.3])
x_common, d_common, r_common, *_ = predict([a]*4, [b]*4, [b@common]*4)
check(x_common, np.zeros((4, 3)))
check(d_common, common)
check(r_common, np.zeros(32))
check(predict([a], [b], [b@common])[0], np.zeros((1, 3)))
gamma = b.T@pa@e
assert np.linalg.norm(gamma) > .01
cancelling = np.linalg.svd(L)[2][-1]
x_cancel, d_cancel, _, *_ = predict([a]*4, [b]*4,
[np.r_[cancelling, np.zeros(4)]]+[np.zeros(8)]*3)
check(d_cancel, np.zeros(2))
check(x_cancel[1:], np.zeros((3, 3)))
orthogonal = np.vstack((np.zeros((2, 3)), np.eye(3)))
orthogonal_b = np.vstack((np.eye(2), np.zeros((3, 2))))
orthogonal_e = orthogonal_b@common
check(predict([orthogonal]*2, [orthogonal_b]*2,
[orthogonal_e, np.zeros(5)])[0], np.zeros((2, 3)))
H = D@np.linalg.pinv(D)
selection = np.eye(len(error))[:, :4]
check(r@r, e[:4]@(np.eye(4)-selection.T@H@selection)@e[:4])
assert np.linalg.matrix_rank(D[4:]) == D.shape[1]
spike = np.eye(len(error))[:, 0]
h = H[0, 0]
spike_r = (np.eye(len(error))-H)@spike
check(spike_r[0], 1-h)
check(spike_r@spike_r, 1-h)
check(spike_r[1:]@spike_r[1:], h*(1-h))
assert np.linalg.norm(pa@e) > np.linalg.norm(r[:8])
left_out_delta = predict([a]*3, [b]*3, [np.zeros(8)]*3)[1]
check(left_out_delta, np.zeros(2))
check(pa@(e-b@left_out_delta), pa@e)
# Exact absorption counterexample: other users cannot anchor two offset directions.
attacked = np.array([[1., 0., .4], [0., 1., -.3], [.2, .4, 1.],
[1., 0., 0.], [0., 1., 0.]])
clean = np.array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.],
[0., 0., 1.], [0., 0., 1.]])
bc = np.vstack((np.eye(2), np.zeros((3, 2))))
corrupted = attacked@np.array([0., 0., .7])+bc@common
assert np.linalg.norm(corrupted[2]) > 0 and np.linalg.norm(corrupted[3:]) == 0
xc, dc, rc, Dc, *_ = predict([attacked]+[clean]*3, [bc]*4,
[corrupted]+[np.zeros(5)]*3)
check(dc, common)
check(xc[1:], np.tile(np.r_[-common, 0.], (3, 1)))
check(rc, np.zeros(20))
assert np.linalg.matrix_rank(Dc[3:]) < Dc.shape[1]
check((np.eye(5)-clean@np.linalg.pinv(clean))@bc, np.zeros((5, 2)))
# A common offset changes neither user contrasts nor median-centered residuals.
samples = np.array([.2, -.3, .4, .1])
check(samples-np.median(samples), (samples+4)-np.median(samples+4))
small = np.array([-3.4e-5, -3.3e-5, -3.3e-5, 1e-4])
center, width = -3.35e-5, .5e-6
difference = small[-1]-center
contrast = abs(small[-1]-np.median(small))/(1.4826*np.median(abs(small-np.median(small)))+1e-9)
lower = (abs(difference)-width)/(2*1.4826*width+1e-9)
assert max(abs(small)) < .001 and contrast >= lower > 50
# Free 3-D geometry includes position-dependent Earth-fixed user velocity.
spin = np.array([[0., -7.292115e-5, 0.], [7.292115e-5, 0., 0.], [0., 0., 0.]])
satellites = np.array([[6.9e6, 1e5, 2e5], [6.8e6, -3e5, 4e5], [7e6, 4e5, -2e5]])
velocities = np.array([[0., 7200., 400.], [1200., 6800., -500.], [-1500., 7000., 100.]])
position = np.array([6.37e6, 3e4, 7e4])
def summaries(p):
ranges = np.linalg.norm(p-satellites, axis=1)
directions = (p-satellites)/ranges[:, None]
doppler = np.sum(directions*(velocities-spin@p), axis=1)
return np.r_[(ranges[1:]-ranges[0])/299792458e-6,
2*np.pi*1e-6/.2*(doppler[1:]-doppler[0])]
ranges = np.linalg.norm(position-satellites, axis=1)
directions = (position-satellites)/ranges[:, None]
tangents = [(np.eye(3)-np.outer(u, u))/r for u, r in zip(directions, ranges)]
doppler_jac = np.array([(v-spin@position)@t-u@spin
for v, t, u in zip(velocities, tangents, directions)])
analytic = np.vstack(((directions[1:]-directions[0])/299792458e-6,
2*np.pi*1e-6/.2*(doppler_jac[1:]-doppler_jac[0])))
step = .1
numeric = np.column_stack([(summaries(position+step*basis)-summaries(position-step*basis))/(2*step)
for basis in np.eye(3)])
geometry_error = np.linalg.norm(analytic-numeric)/np.linalg.norm(analytic)
assert geometry_error < 1e-7, geometry_error
print(f"Free-3D delay/Doppler Jacobian relative error: {geometry_error:.3g}")
print("PASS: block maps, joint interactions, 1/K law, zero-coupling/cancellation,")
print(" single-row recovery, deletion rank, exact absorption and consensus invariance.")
print("Synthetic linear blocks only; real masks/scales and nonlinear prediction remain code-side checks.")
if __name__ == "__main__":
main()
+1
View File
@@ -303,6 +303,7 @@
$\tau_{\mathrm{ref},k}$ & 多用户位置模型中第 $k$ 个用户的参考链路总时延自由标量,吸收该用户未知发射时刻;$K=1$ 时退化为 $\tau_{\mathrm{ref}}$。\\
$\boldsymbol\eta_{\mathrm{mu}}$ & 多用户多星静态主参数,定义为 $\boldsymbol\eta_{\mathrm{mu}}=[\boldsymbol\xi_1^\Tran,\nu_{\mathrm{ref},1},\ldots,\boldsymbol\xi_K^\Tran,\nu_{\mathrm{ref},K}]^\Tran\in\mathbb R^{3K}$;$K=1$ 时退化为 $\boldsymbol\eta$。下标 $\mathrm{mu}$ 表示 multi-user。\\
$\boldsymbol\delta$ & 时间戳误差模型中非参考星的时间戳误差堆叠向量,$\boldsymbol\delta=[\delta_\ell]_{\ell\neq\ell_{\mathrm{ref}}}\in\mathbb R^{L-1}$;作为干扰参数处理。\\
$\boldsymbol\eta_{\mathrm{summary}}$ & 摘要融合模型的主参数,$[\mathbf p_1^\Tran,\ldots,\mathbf p_K^\Tran]^\Tran\in\mathbb R^{3K}$;参考时延与 Doppler 已由观测差分消去,干扰参数为 $\boldsymbol\delta$。局部推导见\appref{subsec:H_summary_poisoning},节内用裸 $\boldsymbol\eta$。\\
$\boldsymbol\kappa$ & 完整实参数向量,专用于把主参数 $\boldsymbol\eta$ 与干扰参数 $\boldsymbol\psi$ 一起堆叠的场合,例如 $\boldsymbol\kappa=[\boldsymbol\eta^\Tran,\boldsymbol\psi^\Tran]^\Tran$。全文不再用 $\boldsymbol\eta$ 表示完整参数向量。\\
\end{longtable}
\endgroup
+276 -2
View File
@@ -5,7 +5,7 @@
\noindent\textbf{本附录设定}:对应正文第~\ref{sec:timestampError}~节的时间戳误差模型。
\begin{itemize}[leftmargin=1.5em,itemindent=0pt]
\item \emph{主参数} $\boldsymbol\eta_{\mathrm{mu}}\in\mathbb R^{3K}$($K$ 个用户的 \gls{doa}--Doppler);\emph{干扰参数} 每星时间戳偏移 $\delta_\ell$(参考星取 $\delta=0$)、复增益与噪声方差 $\boldsymbol\zeta_\ell$。
\item \emph{本附录给出} $\boldsymbol\eta_{\mathrm{mu}}$ 的 \gls{efim} 分块结构、Schur 补消去 $\boldsymbol\delta$ 的解析形式、数值评估框架、$K{=}1,\,L{=}2$ 最简情形的解析推导,以及忽略 $\boldsymbol\delta$ 的 \gls{mcrb};门限以下的大误差与模糊地板见\appref{sec:thresholdBounds}。
\item \emph{本附录给出} $\boldsymbol\eta_{\mathrm{mu}}$ 的 \gls{efim} 分块结构、Schur 补消去 $\boldsymbol\delta$ 的解析形式、数值评估框架、$K{=}1,\,L{=}2$ 最简情形的解析推导,以及忽略 $\boldsymbol\delta$ 的 \gls{mcrb};位置模型还包括时延--时间戳秩分析和摘要融合的联合扰动传播。门限以下的大误差与模糊地板见\appref{sec:thresholdBounds}。
\item \emph{本附录局部符号} $\delta_\ell$:星 $\ell$ 的时间戳偏移(采样单位);$\boldsymbol\zeta_\ell$:星 $\ell$ 的复增益与噪声方差;上标 $\mathrm{pt}$:伪真值。完整索引见\appref{sec:assumptionsAndNotation}。
\end{itemize}
\end{mdquote}
@@ -481,6 +481,280 @@ $\mathbf B$ 即模型 \gls{fim}(\eqref{eq:A6_fim_general} 的 Slepian--Bangs
\paragraph{一般情形}
一般 $L$ 和任意时间戳真值可按\appref{subsec:F3_numericalEfim} 评估。先消复增益、再消逐星时间戳时,时间戳信息块仍为对角;若先消去跨星共享的参考时延或其他主参数,则剩余时间戳块可能耦合。计算形式由消元顺序决定,与偏移是否超过导频自相关宽度无关。
\subsection{摘要融合中的联合扰动吸收与跨用户传播}
\label{subsec:H_summary_poisoning}
前一小节讨论完整波形模型的局部信息。本小节改用逐链路角度、时延差和 Doppler 差的实值摘要,
分析捕获异常怎样改变联合位置--时间戳解。摘要的固定通道尺度定义工作归一化;
它不自动等于实际误差协方差的白化,也不把本小节的最小二乘矩阵变成完整波形模型的 Fisher 信息。
用户位置 $\mathbf p_k\in\mathbb R^3$ 自由,地固用户的惯性系速度为
$\boldsymbol\omega_{\mathrm E}\times\mathbf p_k$,几何及其位置导数在同一参考时刻计算。
每星 offset 被全部用户共享,参考星的 offset 固定为零,跨星载波相位不作为摘要观测。
\paragraph{固定权重的稀疏联合扰动}
将用户 $k$ 的摘要按固定行序堆叠为 $\mathbf z_k$,其模型为
$\mathbf m_k(\mathbf p_k,\boldsymbol\delta)$。
非参考链路提供时延差、Doppler 差及两角,参考链路只提供两角。
令 $\mathbf C_k$ 为固定通道尺度的对角矩阵,$\mathbf V_k$ 为固定非负行权矩阵,
$\mathbf R_k=\mathbf V_k^{1/2}\mathbf C_k^{-1}$。
零权行直接删除。对真值附近的确定性输入变化 $\Delta\mathbf z_k$,定义
%
\begin{equation}
\label{eq:H_summary_design}
\begin{aligned}
\mathbf e_k&=\mathbf R_k\Delta\mathbf z_k,\qquad
\mathbf A_k=\mathbf R_k\frac{\partial\mathbf m_k}{\partial\mathbf p_k^\Tran},\qquad
\mathbf B_k=\mathbf R_k\frac{\partial\mathbf m_k}{\partial\boldsymbol\delta^\Tran},\\
\mathbf A&=\operatorname{blkdiag}(\mathbf A_1,\ldots,\mathbf A_K),\qquad
\mathbf B=\begin{bmatrix}\mathbf B_1\\\vdots\\\mathbf B_K\end{bmatrix},\qquad
\mathbf e=\begin{bmatrix}\mathbf e_1\\\vdots\\\mathbf e_K\end{bmatrix},\\
Q(\Delta\boldsymbol\eta,\Delta\boldsymbol\delta)
&=\|\mathbf e-\mathbf A\Delta\boldsymbol\eta-\mathbf B\Delta\boldsymbol\delta\|_2^2,
\qquad \Delta\boldsymbol\eta=[\Delta\mathbf p_1^\Tran,\ldots,\Delta\mathbf p_K^\Tran]^\Tran.
\end{aligned}
\end{equation}
%
所有导数在同一工作点求值,$\mathbf B_k$ 只在时延差行非零。
具体地,记星到用户方向为 $\mathbf u_\ell=\dfrac{\mathbf p-\mathbf s_\ell}{r_\ell}$,
$r_\ell=\|\mathbf p-\mathbf s_\ell\|_2$,
$\mathbf U_\ell=\dfrac{\mathbf I-\mathbf u_\ell\mathbf u_\ell^\Tran}{r_\ell}$,
$\mathbf O_{\mathrm E}\mathbf p=\boldsymbol\omega_{\mathrm E}\times\mathbf p$。
以 $\ell_0$ 为参考星,采用正时间相位 $e^{j\nu t}$ 的摘要约定,原始几何行导数为
%
\begin{equation}
\label{eq:H_summary_geometry_derivatives}
\begin{aligned}
\frac{\partial\Delta\tau_\ell}{\partial\mathbf p^\Tran}
&=\frac{(\mathbf u_\ell-\mathbf u_{\ell_0})^\Tran}{c_0T_{\mathrm s}},\\
\frac{\partial\Delta\nu_\ell}{\partial\mathbf p^\Tran}
&=\frac{2\pi T_{\mathrm s}}{\lambda_{\mathrm c}}
\left[(\mathbf v_\ell-\mathbf O_{\mathrm E}\mathbf p)^\Tran\mathbf U_\ell
-\mathbf u_\ell^\Tran\mathbf O_{\mathrm E}
-(\mathbf v_{\ell_0}-\mathbf O_{\mathrm E}\mathbf p)^\Tran\mathbf U_{\ell_0}
+\mathbf u_{\ell_0}^\Tran\mathbf O_{\mathrm E}\right].
\end{aligned}
\end{equation}
%
角行采用同一星到用户方向在已知阵列坐标系中的两角导数。
每个非参考星的列在该用户对应的时延差行取该行的归一化系数。
若时延用样本计,offset 也用样本计;若改为秒,须同时换算两者及其列尺度。
对指定用户 $a$ 的若干非参考链路,以固定选择矩阵表示联合污染:
%
\begin{equation}
\label{eq:H_joint_sparse_error}
\mathbf e_a=\mathbf S_{\tau,a}\mathbf u_\tau+\mathbf S_{\nu,a}\mathbf u_\nu
=\mathbf E_a\mathbf u,
\qquad \mathbf u=\begin{bmatrix}\mathbf u_\tau\\\mathbf u_\nu\end{bmatrix},
\qquad \mathbf e_k=\mathbf0\quad(k\ne a).
\end{equation}
%
这里 $\mathbf u_\tau,\mathbf u_\nu$ 是经固定尺度及权重变换后的实际扰动,
不要求它们来自独立抽样。参考链路被污染时,应先形成实际差分误差向量;
同一个参考误差会进入多条差分行,不能继续用只污染非参考链路的选择方式。
\paragraph{先消位置,再解共享时间戳}
假设各 $\mathbf A_k$ 满列秩。令
$\mathbf P_k=\mathbf I-\mathbf A_k\mathbf A_k^\dagger$,
$\mathbf P=\operatorname{blkdiag}(\mathbf P_1,\ldots,\mathbf P_K)$,并定义
%
\begin{equation}
\label{eq:H_offset_residual_design}
\mathbf Z=\mathbf P\mathbf B,\qquad
\mathbf b=\mathbf P\mathbf e,\qquad
\mathbf S=\mathbf Z^\Tran\mathbf Z
=\sum_k\mathbf B_k^\Tran\mathbf P_k\mathbf B_k,\qquad
\boldsymbol\gamma=\mathbf Z^\Tran\mathbf b.
\end{equation}
%
对给定 $\Delta\boldsymbol\delta$,位置最小二乘解为
$\mathbf A_k^\dagger(\mathbf e_k-\mathbf B_k\Delta\boldsymbol\delta)$。
代回 \eqref{eq:H_summary_design} 得到
$\|\mathbf b-\mathbf Z\Delta\boldsymbol\delta\|_2^2$。
若 $\mathbf S\succ0$,共享时间戳、用户位置及拟合残差的唯一局部解为
%
\begin{equation}
\label{eq:H_poison_block_maps}
\begin{aligned}
\widehat{\Delta\boldsymbol\delta}&=\mathbf S^{-1}\boldsymbol\gamma,\\
\widehat{\Delta\mathbf p_a}
&=\mathbf A_a^\dagger\mathbf e_a
-\mathbf A_a^\dagger\mathbf B_a\mathbf S^{-1}\boldsymbol\gamma,\\
\widehat{\Delta\mathbf p_k}
&=-\mathbf A_k^\dagger\mathbf B_k\mathbf S^{-1}\boldsymbol\gamma
\quad(k\ne a),\\
\widehat{\mathbf r}_k
&=\mathbf P_k(\mathbf e_k-\mathbf B_k\mathbf S^{-1}\boldsymbol\gamma).
\end{aligned}
\end{equation}
%
式~\eqref{eq:H_poison_block_maps} 将污染用户的直接位置变化与经共享 offset 的变化分开。
在本摘要模型的块对角工作权重下,未污染用户的跨用户位置变化只经共享 offset 传播。
实际共享参考误差的完整协方差若混合用户块,须重新构造全局归一化矩阵,不能直接沿用这一分解。
若 $\mathbf S$ 奇异,可用 $\mathbf Z^\dagger\mathbf b$ 给出一个最小范数解;
零空间方向会改变部分位置或 offset 时,应报告解的不唯一性,不能把该解称为唯一扰动预测。
\paragraph{已知与未知 offset 的吸收差别}
固定真实 offset 时,位置扰动为 $\mathbf A_k^\dagger\mathbf e_k$,残差为 $\mathbf b$。
将 offset 放开后,新增可吸收空间为 $\operatorname{range}(\mathbf Z)$,且
%
\begin{equation}
\label{eq:H_extra_absorption}
\begin{aligned}
\operatorname{range}[\mathbf A,\mathbf B]
&=\operatorname{range}(\mathbf A)\mathbin{\oplus}\operatorname{range}(\mathbf Z),\\
Q_{\mathrm{known}}-Q_{\mathrm{unknown}}
&=\boldsymbol\gamma^\Tran\mathbf S^{-1}\boldsymbol\gamma\ge0.
\end{aligned}
\end{equation}
%
两个空间正交,因为 $\mathbf A^\Tran\mathbf Z=\mathbf0$。
投影 $\mathbf b$ 到第二个空间即可证明成本差式。
对特定污染,新增吸收严格为正当且仅当 $\boldsymbol\gamma\ne\mathbf0$。
未污染用户 $k$ 的位置变化非零还要求
$\mathbf A_k^\dagger\mathbf B_k\mathbf S^{-1}\boldsymbol\gamma\ne\mathbf0$。
因此,存在 offset 自由度既不保证吸收任意污染,也不保证污染传到每个用户。
若 $\boldsymbol\gamma=\mathbf0$,放开 offset 不改变该污染的解;
若 $\mathbf A_k^\Tran\mathbf B_k=\mathbf0$,用户 $k$ 的位置不接受这条传播路径,
即使其他用户推动了 offset 变化。
\paragraph{Doppler 经位置耦合推动 offset}
对 \eqref{eq:H_joint_sparse_error} 定义
$\mathbf L_\tau=\mathbf B_a^\Tran\mathbf P_a\mathbf S_{\tau,a}$、
$\mathbf L_\nu=\mathbf B_a^\Tran\mathbf P_a\mathbf S_{\nu,a}$。
由于 $\mathbf B_a^\Tran\mathbf S_{\nu,a}=\mathbf0$,有
%
\begin{equation}
\label{eq:H_delay_doppler_interaction}
\begin{aligned}
\boldsymbol\gamma&=\mathbf L_\tau\mathbf u_\tau+\mathbf L_\nu\mathbf u_\nu,\\
\mathbf L_\nu
&=-\mathbf B_a^\Tran\mathbf A_a
(\mathbf A_a^\Tran\mathbf A_a)^{-1}\mathbf A_a^\Tran\mathbf S_{\nu,a},\\
Q_{\mathrm{known}}-Q_{\mathrm{unknown}}
&=\mathbf u_\tau^\Tran\mathbf L_\tau^\Tran\mathbf S^{-1}\mathbf L_\tau\mathbf u_\tau
+2\mathbf u_\tau^\Tran\mathbf L_\tau^\Tran\mathbf S^{-1}\mathbf L_\nu\mathbf u_\nu
+\mathbf u_\nu^\Tran\mathbf L_\nu^\Tran\mathbf S^{-1}\mathbf L_\nu\mathbf u_\nu.
\end{aligned}
\end{equation}
%
Doppler 对 timestamp 的直接导数为零,但 Doppler 异常推动的位置变化可改变时延拟合,进而改变共享 offset。
交叉项可以增强或抵消两类异常的作用,实际联合向量须一起代入。
若仅在期望中令两类扰动独立且零均值,交叉项的期望为零;单次实现仍保留该项。
\paragraph{同构用户的定量规律}
设 $K$ 个用户具有相同的工作归一化、位置 Jacobian 和 offset 列,
$\mathbf A_k=\mathbf A_0$、$\mathbf B_k=\mathbf B_0$,
$\mathbf S_0=\mathbf B_0^\Tran\mathbf P_0\mathbf B_0\succ0$。
只有用户 $a$ 受污染时,令
$\mathbf d_0=\mathbf S_0^{-1}\mathbf B_0^\Tran\mathbf P_0\mathbf e_a$,则
%
\begin{equation}
\label{eq:H_identical_user_dilution}
\widehat{\Delta\boldsymbol\delta}=\frac{\mathbf d_0}{K},\qquad
\widehat{\Delta\mathbf p_k}=-\frac{\mathbf A_0^\dagger\mathbf B_0\mathbf d_0}{K} (k\ne a),
\qquad
Q_{\mathrm{known}}-Q_{\mathrm{unknown}}
=\frac{\mathbf d_0^\Tran\mathbf S_0\mathbf d_0}{K}.
\end{equation}
%
这给出固定单用户异常下的 $1/K$ 稀释规律,是共享结构的一个条件性结论。
如果全部用户受到相同的时延异常 $\mathbf e_k=\mathbf B_0\mathbf d$,则
offset 可以整体变化 $\mathbf d$,位置不变且残差为零,增加用户数不会解除这种共模混淆。
不同用户的几何、权重或污染数改变后,应使用 \eqref{eq:H_poison_block_maps},不外推 $1/K$。
\paragraph{单行特例与删除污染行的秩}
记完整摘要 Jacobian $\mathbf J=[\mathbf A,\mathbf B]$ 满列秩,
$\mathbf H=\mathbf J(\mathbf J^\Tran\mathbf J)^{-1}\mathbf J^\Tran$。
对任意污染行集合 $\mathcal S$,以 $\mathbf E_{\mathcal S}$ 为坐标选择矩阵,
$\mathbf H_{\mathcal S\mathcal S}=\mathbf E_{\mathcal S}^\Tran\mathbf H\mathbf E_{\mathcal S}$。
若 $\mathbf e=\mathbf E_{\mathcal S}\mathbf u$,则
%
\begin{equation}
\label{eq:H_sparse_leverage}
\widehat{\mathbf r}=(\mathbf I-\mathbf H)\mathbf E_{\mathcal S}\mathbf u,\qquad
Q_{\mathrm{unknown}}
=\mathbf u^\Tran(\mathbf I-\mathbf H_{\mathcal S\mathcal S})\mathbf u.
\end{equation}
%
取单行幅度 $s$ 和 leverage $h$,恢复污染行残差 $(1-h)s$、成本 $s^2(1-h)$,
以及其余行残差能量 $s^2h(1-h)$。
存在非零、支撑在 $\mathcal S$ 上且被完全吸收的扰动,当且仅当删除这些行后
$\mathbf J_{-\mathcal S}$ 失去满列秩:
非零零空间向量 $\mathbf v$ 给出 $\mathbf J\mathbf v$,它只在污染行非零;反向也成立。
秩亏只保证存在这种扰动,不保证每个联合 delay--Doppler 向量都会被吸收。
对 $K=1$,每颗非参考星的 offset 只进入一条时延差行,
任意仅含时延差的扰动都可由 offset 吸收;加入 Doppler 污染后仍须检查完整向量。
\paragraph{跨用户共识的可用信息与盲区}
在同一星的时延行,令 $\mathbf c_\ell$ 表示观测时延差减去候选几何时延差的用户向量,
尚未扣除共享 offset。对 $\mathbf T\mathbf1_K=\mathbf0$ 的用户对比矩阵,
未归一化残差 $\mathbf r_\ell^\tau$ 满足
%
\begin{equation}
\label{eq:H_consensus_limit}
\mathbf T\mathbf c_\ell=\mathbf T\mathbf r_\ell^\tau,\qquad
c_{\ell,k}-\operatorname{med}_{k'}c_{\ell,k'}
=r_{\ell,k}^\tau-\operatorname{med}_{k'}r_{\ell,k'}^\tau.
\end{equation}
%
median 的平移等变性给出第二式;MAD 也不随公共平移改变。
对同星同通道的共同归一化尺度,这些等式保持成立。
因此,当前拟合残差的用户共识是残差向量的统计量,不是新增独立观测。
非零残差仍可能包含用户分布差异,例如少数用户偏离多数用户;
标准化的 median/MAD 特征可以放大相对差别,但其分母和噪声也必须一起评估。
若该通道所有残差绝对值均不超过 $\epsilon$,用户间残差差值不超过 $2\epsilon$;
若所有通道残差精确为零,任何仅由这些残差构成的共识特征都不能识别污染。
相同输入、不同真实参数与污染解释之间的区分还需要未被拟合吸收的观测或先验约束。
一个保留区分信息的条件是残差中的多数用户仍形成紧簇。
对同星同通道的归一化残差,设严格多数用户满足 $|r_k-r_0|\le\epsilon_0$,
待检用户满足 $r_a=r_0+\Delta$、$|\Delta|>\epsilon_0$。
以 $\epsilon_{\mathrm{reg}}>0$ 为固定分母下限,则
%
\begin{equation}
\label{eq:H_consensus_separation}
d_a=\frac{|r_a-\operatorname{med}_kr_k|}
{1.4826\operatorname{MAD}_kr_k+\epsilon_{\mathrm{reg}}}
\ge\frac{|\Delta|-\epsilon_0}{2(1.4826)\epsilon_0+\epsilon_{\mathrm{reg}}}.
\end{equation}
%
证明是 median 位于 $[r_0-\epsilon_0,r_0+\epsilon_0]$,
多数用户到 median 的距离至多为 $2\epsilon_0$,从而 MAD 也至多为 $2\epsilon_0$。
当 $\epsilon_0\ll|\Delta|$ 时,即使绝对残差都较小,共识特征仍可保留显著的相对差别。
这个条件须由拟合后的实际残差核对,不能仅凭输入污染稀疏就假设成立;
共模残差、无严格多数或完全吸收的情形不提供该保证。
一种可计算的留出核对是排除用户 $a$,只用其余用户估计 offset。
若 $\mathbf S_{-a}=\sum_{k\ne a}\mathbf B_k^\Tran\mathbf P_k\mathbf B_k\succ0$,则
%
\begin{equation}
\label{eq:H_leave_user_out}
\widehat{\Delta\boldsymbol\delta}_{-a}
=\mathbf S_{-a}^{-1}\sum_{k\ne a}\mathbf B_k^\Tran\mathbf P_k\mathbf e_k,
\qquad
\mathbf r_a^{\mathrm{out}}
=\mathbf P_a(\mathbf e_a-\mathbf B_a\widehat{\Delta\boldsymbol\delta}_{-a}).
\end{equation}
%
在本节仅单用户受扰、无新增噪声的局部比较中,训练用户给出零 offset 增量,
故 $\mathbf r_a^{\mathrm{out}}=\mathbf P_a\mathbf e_a$。
留出残差避免该用户参与 offset 拟合,但如果 $\mathbf P_a\mathbf e_a=\mathbf0$,
污染已被该用户的位置自由度吸收,仍不能区分;若 $\mathbf S_{-a}$ 奇异,其他用户也不能唯一锚定 offset。
这支持检验共享结构的诊断,不直接保证逐残差 Huber 权重或学习门控的成功。
\paragraph{局部预测的计算范围}
给定固定行序、污染 mask、通道尺度、权重和位置工作点,
可由 \eqref{eq:H_poison_block_maps} 输出 offset、污染用户及其他用户位置增量,
并由 \eqref{eq:H_extra_absorption} 输出新增吸收能量。
计算时使用 QR 或 SVD 检查 $\mathbf A_k$、$\mathbf Z$、$\mathbf J_{-\mathcal S}$ 的秩,
在声明的列尺度下报告最弱奇异方向,而不是仅用正规方程求逆。
用扰动乘以小系数再缩小系数,可检查非线性观测变化的一阶收敛;
大误捕获、迭代权重更新及候选分支转换需要非线性验证。
若只核对一轮带阻尼的更新,线性映射改为
$\widehat{\Delta\boldsymbol\kappa}=(\mathbf J^\Tran\mathbf J+\lambda\boldsymbol\Lambda)^{-1}\mathbf J^\Tran\mathbf e$,
其中 $\boldsymbol\kappa=[\boldsymbol\eta^\Tran,\boldsymbol\delta^\Tran]^\Tran$,$\boldsymbol\Lambda$ 为固定阻尼矩阵。
该映射的拟合矩阵一般不幂等,不能套用无阻尼投影的 leverage 恒等式。
\medskip
至此,\appref{sec:timestampErrCrb} 给出了时间戳误差的三类结果:作为干扰参数估计时关于 $\boldsymbol\eta_{\mathrm{mu}}$ 的 \gls{efim}(见前述各小节),被估计器忽略时的 \gls{mcrb}(\appref{subsec:F5_mcrb}),以及位置模型下 $\delta_\ell$ 与到达时间差通道同轴混淆、单用户退化而多用户共享结构恢复的秩分析(\appref{subsec:F6_tauDeltaConfound})。多用户情形与一般 $L$ 的 \gls{efim} 由\appref{subsec:F3_numericalEfim} 的数值流程评估,作为后续数据驱动方法与界对比的基础。
至此,\appref{sec:timestampErrCrb} 给出了时间戳误差的四类结果:作为干扰参数估计时关于 $\boldsymbol\eta_{\mathrm{mu}}$ 的 \gls{efim}(见前述各小节),被估计器忽略时的 \gls{mcrb}(\appref{subsec:F5_mcrb}),位置模型下时延--时间戳混淆的秩分析(\appref{subsec:F6_tauDeltaConfound}),以及固定权重摘要融合中的联合扰动吸收与跨用户传播(\appref{subsec:H_summary_poisoning})。多用户情形与一般 $L$ 的 \gls{efim} 由\appref{subsec:F3_numericalEfim} 的数值流程评估,作为后续数据驱动方法与界对比的基础。