根据《孙子算经》,鸡兔同笼问题如下:

今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?

小学奥数解法非常巧妙。假设我有一个哨子,每吹一声,所有动物就会抬起一条腿。那么我先吹一下,地上剩下94-35=59条腿。我再吹一声,地上剩下59-35=24条腿。此时鸡没有腿着地了,而每个兔子还有两条腿着地,于是兔子有24/2=12只。推出鸡有35-12=23只。如果你觉得已经有了这么优美简洁的解法,还要啥更复杂的方法呀?那么请你看完整个系列。

初中方程解法也不难。设鸡的数量为x,兔的数量为y。x+y=35, 2x+4y=94。直接解得上述结果。

此处矩阵不过是方程的一种表示形式。我们用一个向量\mathbf{x}=\begin{bmatrix}x_1 \\  x_2 \end{bmatrix}表示所有未知的参数(鸡x_1,兔x_2)。用一个矩阵A=\begin{bmatrix}1 & 2 \\  2 &4 \end{bmatrix} 表示观测系数。用一个列向量\mathbf{b}=\begin{bmatrix}y_1 \\ y_2 \end{bmatrix}=\begin{bmatrix} 35 \\ 94 \end{bmatrix}表示所有观测量

于是,我们利用矩阵乘法,就得到了如下表达式A\mathbf{x}=\mathbf{b}. 我们有观测系数和观测量,反推出未知参数。这个表达式数学上完全等价于方程组。但是在人主观理解层面,已经加入了一些奇妙元素。这个奇妙的式子A\mathbf{x}=\mathbf{b},暗示了一些东西。我们想知道一些参数(鸡和兔各有几只),但是我们因为一些传感器限制无法直接测量未知参数(只能数头和脚的个数),并且我们收到了传感器数据并且假定传感器是没有噪声的(35头,94腿),那么我们可以通过上述表达式,通过解出\mathbf{x},我们就能获得未知参数是多少了。

注意一点,我们假定这里的传感器或者观测器得到的数据是未知参数的线性组合并且是不变的(n只鸡恒有2n条腿n个脑袋;n只兔子恒有4n条腿n个脑袋)。如果传感器是未知参数的非线性组合,比如我的腿传感器有奇妙的设置,n只鸡测出n^2条腿,n只兔子测出n^3条腿,那么就不能写成A\mathbf{x}=\mathbf{b}形式。真实世界中GPS就是类似情况。对手机来说,它有四个未知参数:x坐标、y坐标、z坐标和手机时钟与GPS卫星群的时钟时间差。这些量我无法直接测量。我每次测量时候,的得到的实际数据是某些卫星的x坐标,y坐标,z坐标和卫星发送这个数据包的时间戳(注意两件事情:一,地球是圆的,所以x坐标、y坐标、z坐标是为了GPS特殊定义的;二,我们假定GPS众多卫星之间时钟是完全同步的,因此手机跟某个卫星的时钟差就是手机跟其他卫星的时钟差)。我们的一条观测模型变成了(x-x_s)^2+(y-y_s)^2+(z-z_s)^2 = c\times(t-t_s+)。其中x,y,z是手机的坐标;t是手机收到GPS数据包时候的时间;t_o 是手机和GPS时钟差;t_s是卫星发送数据包的时间;x_s,y_s,z_s是卫星的坐标;c是电磁波传播速度。这里面有一堆平方项,导致难以写成线性组合。具体的处理方法以后会讲,还是用到了A\mathbf{x}=\mathbf{b}

现在请记住这个系列的核心概念,我们要估计\mathbf{x},但是无法直接测量,于是我们使用了传感器A,得到传感器的读数\mathbf{b},最后用A\mathbf{x}=\mathbf{b},求解出\mathbf{x}

发表评论