现在你头顶两万公里处,有三十多颗美国空军的卫星在以每小时一万四千公里的速度绕地球狂奔。每颗卫星肚子里装着好几台原子钟,每台价值几十万美元。它们一秒钟不停地向整个地球广播同一句话:「现在是几点几分几秒几纳秒,以及我在哪。」
这就是 GPS——全球定位系统(Global Positioning System),一套由三十多颗卫星组成的、对着全人类免费报时的天基钟表阵列。你的手机什么都不用发,只用「听」。这个单向广播的设计极其重要:卫星不知道、也不在乎谁在听,所以一百亿人同时用 GPS,卫星也不会有丝毫压力——它就像一座永远在念经的电台。
从报时到位置:三球相交
假设你的手机有一块完美的钟(先假装有,马上再戳破这个假设)。听一颗卫星:它喊「我的信号是 12:00:00.000 发出的」,你的钟显示 12:00:00.067 收到——飞行 67 毫秒,乘上光速,你离这颗卫星大约两万公里。也就是说,你在一个以卫星为球心、半径两万公里的球面上。
听两颗:你同时在两个球面上。两个球面相交成一个圆环。
听三颗:三个球面交出两个点。其中一个点在地球表面附近,另一个通常离谱到可以排除(比如在太空深处)。剩下的那个点,就是你。
这就是第二章说的三角定位,只是把「已知点」从地面的铁塔搬到了天上的卫星。漂亮、干净、数学上无懈可击——除了那个假装成立的前提:你的手机有一块完美的钟。
第四颗卫星:用数学消灭一块便宜钟
戳破假设。第三章说过,你手机里的时钟芯片一天能漂几毫秒。几毫秒的钟差,乘上光速就是几百上千公里的距离误差。如果直接拿它去减卫星的原子钟,算出来的不是「你在哪」,是「哪个星球」。
GPS 的解法是整个系统里最漂亮的一笔:把钟差当成一个未知数,连位置一起解出来。
看这里发生了什么。你的钟是错的,但它错得「一致」——它对所有卫星信号都慢同一个量(比如统一慢 3 毫秒)。所以算出来的每个距离都错了同一段(3 毫秒 × 光速 = 90 万公里),这个错误距离叫伪距——「假距离」,因为它混着一段未知的钟差。现在未知数有四个:你的经度、纬度、高度,外加钟差。四个未知数,需要四个方程——
所以需要四颗卫星,不是三颗。第四颗卫星提供的第四个方程,正好把那个讨厌的钟差钉死。解完之后手机不但知道自己在哪,还顺便知道了自己的钟慢了几毫秒——它会悄悄把自己校准。这就是为什么你的手机时间永远那么准:它每天都在蹭卫星上的原子钟对表。
大白话:四个裁判各吹一次哨,你知道其中三个的表是准的、自己的表肯定慢。四个「我离哨声多远」摆在一起,唯一能让四个数字自洽的解释只有一个——既定了你的位置,也定了你的表慢多少。数学替你换了一块原子钟。
卫星怎么知道自己在哪
还剩一个漏洞:整个算法的前提是「卫星的位置已知」。卫星以一万四千公里的时速飞,它的位置是谁量的?
答案是地面上一群更无聊的人。美国军方在全球布设了监测站网,日夜不停地盯着每颗卫星,精确反推它的轨道,算出它未来几小时会在哪,再上传给卫星。卫星广播的那句「我在哪」,其实是地面站算好、喂给它念的稿子。所以 GPS 从来不是「三十颗卫星」的事,而是「三十颗卫星 + 地面一整支保姆团队」的事。这支团队停摆几个月,星座的位置数据就会慢慢失效——它是人类维护得最勤快的机器之一。
还差一点:米级误差从哪来
理论算到这里是完美的,可你的手机日常精度是几米,不是几毫米。误差的来源有一串:卫星轨道报得不够细、原子钟也不是无限准、信号穿过大气层会被电离层拖慢一点点(相当于几米的距离)、信号在楼宇间反弹走冤枉路……这些误差大多在「几米」量级,加起来就是蓝晕存在的原因。
但有一个误差的来源最不像工程问题,以至于它的故事值得单独一章:卫星上的原子钟,因为相对论,天生就和地面的钟走得不一样快。如果设计师假装爱因斯坦不存在,GPS 每天会漂出去十公里。下一章讲这个。