每来一个读数,只改一次
高斯的最小二乘要把所有读数一次拿来解;他把它拆成了一步一步——手里只带着一个估计和一张协方差表,旧读数用完就扔。
1960 年那篇的标题是《线性滤波与预测问题的新方法》,要新的是维纳 1949 年那套:维纳把滤波写成一个积分方程,解出来的是滤波器的脉冲响应,只对平稳的信号好用,而且卡尔曼在引言里直说「很不适合在机器上算」。他换了一个起点——把信号写成一个由白噪声推着走的线性系统的「状态」,于是最优估计可以一步一步地递推:来一个读数,用它与预测之差改一次估计,同时照第 41 页 (28)–(30) 三式把误差的协方差往前推一步。第 43–44 页他给了两个例子,第二个正是本件演示的:一群粒子从原点出发、各自匀速,量其中一颗的位置,读数里叠着彼此相关的噪声,问它此刻在哪、速度多少。他把协方差的闭式写了出来,并在旁边说这「类似于往越来越多的点上拟合一条直线」——那正是高斯的最小二乘(馆里高斯那一页)。本馆拿它逐位核过:φ33 取 0、0.5、0.9,递推出来的协方差与他印的闭式在前五十步里相对差都在 10 的 −15 次方上下,两页上的式子一处印错也没有;倒是第 41 页那条总结性的 (32) 式末尾一个因子的次序印反了(见本页顶上那条公式的说明)。递推与最小二乘给出的是同一个数,要紧的是不必存下全部读数:同年秋天,正是这一点让它进了登月航线的导航研究(见本页第六件)。
拖动「用前几个读数」,看递推与一次性最小二乘给出同一个速度估计;再换一档噪声的相关系数
这是 1960 年那篇原文第 43–44 页的例 2:一颗粒子从原点出发匀速走,速度不知道;每一步量一次位置,读数上叠着一股彼此相关的噪声。滤波器每来一个读数就把估计改一次,改完就把读数扔掉,手里只带着一个估计和一个 3×3 的协方差矩阵。右栏把它与高斯的最小二乘并排:同一批读数一次拿来、先把噪声漂白、再解正规方程,两条路给出同一个速度估计,差 1.3e-15;而递推出来的误差方差与他印在第 44 页的闭式 b²t²/C1(t) 相对差 1.6e-16。他自己在同一页写着:这「类似于往越来越多的点上拟合一条直线」。下半幅的虚线是他给的 t ≫ 1 近似式,用到第 30 个读数时比精确值高 4.9%,t 越大越贴。
