本节摘要:牛顿引力统治天体力学两百年,却在世纪之交暴露两道裂缝——理论上,瞬时超距作用与狭义相对论的光速上限正面相撞;观测上,水星近日点每百年多出约 43 角秒的偏航始终对不上账。本节用两个数值实验把这两道裂缝量出来,它们分别是广义相对论必须出生的"理论理由"与"观测理由"。
航志从第 2 章起就要换用几何语言,但在拆掉旧海图之前,得先在日志里写清楚旧海图到底坏在哪。这一节站在牛顿力学的立场做一次总账:引力定律本身的形式问题(裂缝一)与它在水星轨道上的记账误差(裂缝二)。它不承接任何前节,是全册的起点站;下一节(1.2 等效原理)将给出修补这两道裂缝的钥匙。
牛顿万有引力定律的形式干净得漂亮:两质点之间的引力只依赖距离,与方位、历史、介质一概无关。这背后藏着一个从未被言明的假设——引力作用是瞬时的。太阳此刻在你脚下的位置决定了此刻拉你的力,中间不需要任何传播时间。
狭义相对论出现后,这个假设变得刺眼。光速不只是一切物质与信号速度的上限,更是因果结构的边界:任何影响跨越 1 亿 5 千万公里(日地距离)至少需要约 500 秒。假如太阳这一瞬间凭空消失,按牛顿理论地球会立刻脱轨沿切线飞出;按相对论,地球至少还要"照常公转"约 8 分钟,因为连"太阳没了"这个消息本身也追不上光。
这不只是哲学洁癖。天文学家拉普拉斯早在十九世纪就尝试用月球轨道的稳定性反推"引力速度",得到的下限高得离谱,等于说引力传播快到无法测量——一个不可测量速度的作用,在物理上与瞬时作用无法区分,也就无法纳入相对论的框架。用数值感受一下这道裂缝有多宽:
# 裂缝一的量级:把"瞬时引力"与光速上限放到同一把尺上 c = 299792.458 # 光速,单位 km/s AU = 1.496e8 # 日地距离,单位 km t_light_sun = AU / c # 太阳的"消息"传到地球所需时间 print(f"太阳消息到达地球: {t_light_sun:.1f} s ≈ {t_light_sun/60:.1f} min") # 地球公转线速度约 29.8 km/s,这 8 分钟里它走了多远 v_orbit = 29.8 lag = v_orbit * t_light_sun print(f"若引力瞬时、光速有限,地球位置账目错位约 {lag:.0f} km") print(f"——占日地距离的 {lag/AU*100:.4f}%,看似不大,") print(f" 但这个错位会逐圈累积,绝不可能在动力学里长期隐藏")
运行后日志记下:太阳消息到达地球约 499.0 秒(8.3 分钟);瞬时引力的假设让账面上凭空多出约 14873 公里的位置错位。牛顿框架里没有任何机制能解释"引力为什么恰好瞬时",而相对论框架里"瞬时"本身就是违规——两套体系在因果结构上不兼容,这是必须换海图的理论理由。
顺带一提,牛顿引力还有一个不大显眼的毛病:其场方程(泊松方程)里出现的是拉普拉斯算符对空间坐标的二阶导,时间完全缺席。一个不含时间的方程如何描述一个必须随时间演化的宇宙?这个问题在本节先挂起,第 3 章场方程登场时你会看到爱因斯坦给出的答案在结构上如何回应它。
理论裂缝之外,观测账本同样不平静。行星并非沿完美闭合椭圆运动:其他行星的引力摄动会让近日点缓慢进动。天文学家可以把每颗行星的贡献逐一算清,与观测对账——除了水星,总能对平。
账本大致如下(单位:角秒每百年):
# 水星近日点进动账本:牛顿摄动理论 vs 观测 contributions = { "金星摄动": 277.9, "地球摄动": 90.3, "木星摄动": 153.6, "其余行星": 11.3, "太阳扁率": 9.8, # 太阳非完美球形带来的额外项 } newton_total = sum(contributions.values()) observed = 574.1 # 十九世纪末观测总进动(Le Verrier 之后多轮精化) print("水星近日点进动对账(角秒/百年)") for k, v in contributions.items(): print(f" {k:<8s} {v:7.1f}") print(f" {'牛顿合计':<8s} {newton_total:7.1f}") print(f" {'观测值':<8s} {observed:7.1f}") residual = observed - newton_total print(f" {'剩余差额':<8s} {residual:7.1f} <-- 牛顿框架内无法解释")
对账结果:牛顿框架合计约 542.9,观测约 574.1,剩余差额约 31.2……等等,日志里这个数字与教科书常引用的 43 角秒有出入。原因在于太阳扁率一项:若取更现代的太阳扁率测量,该项贡献几乎归零,剩余差额就回到约 41–43 角秒。这个波折本身就是科学史的一部分——十九世纪末一度有人用"更扁的太阳"把账强行配平,后来被太阳扁率的精密测量否定。缺口没有被修补手段消除,反而在更干净的数据下变得更显眼,这正是好物理问题的标志。
把 43 角秒换算成直觉可感的量:
# 43 角秒到底多大?换算成"每圈轨道"与"百年位移" import math resid_per_century = 43.0 # 角秒/百年 T_mercury = 0.240846 # 水星轨道周期,单位年 orbits_per_century = 100 / T_mercury resid_per_orbit = resid_per_century / orbits_per_century print(f"百年内水星公转圈数: {orbits_per_century:.0f}") print(f"每圈多转: {resid_per_orbit:.5f} 角秒 = {resid_per_orbit/3600:.7f} 度") # 近日点距离约 4600 万公里,这段角度对应的弧长 r_perihelion = 4.6e10 # 米 arc = r_perihelion * math.radians(resid_per_orbit/3600) print(f"每圈近日点漂移的弧长: {arc/1000:.1f} km") print(f"——不到 6 公里,却年复一年稳定出现,绝不可能用'测量噪声'打发")
日志记录:水星每百年绕日约 415 圈,每圈多转约 0.1035 角秒,折合近日点处约 5.8 公里的弧长漂移。单看一圈微不足道,但它是系统性的——勒维耶发现它之后的半个多世纪里,天文学家试过祝融星(一颗从未被找到的水内行星)、太阳扁率、修正的引力定律,全部失败。一道 43 角秒的裂缝,等着一个彻底不同的理论来填。
把两条裂缝并排放进日志,会发现它们互相印证而不是各自独立:
| 裂缝 | 性质 | 对新理论的要求 |
|---|---|---|
| 瞬时超距作用与光速上限冲突 | 理论内部不自洽 | 引力必须随时空一起"演化",且以有限速度传播影响 |
| 水星近日点剩余进动 | 精确观测的系统性偏差 | 在太阳系尺度上给出牛顿引力之外的小修正 |
| 泊松方程不含时间 | 数学形式陈旧 | 场方程须对时间与空间一视同仁 |
新理论既要保住牛顿引力在弱场低速下的全部成功(第 3.3 节会看到这叫"弱场近似"),又要在强场、高速、精确计量的场合给出修正。预告一下修正的量级:广义相对论对水星进动的预言恰好是每百年 43.03 角秒——推导与复算放在第 4.1 节,那是航志进入经典航段后的第一笔对账。
⚠️ 航行警告:不要把"牛顿理论被推翻"写进日志。准确的记法是"适用范围被划定"——日常工程、行星际导航至今仍在牛顿框架内计算,只在精度逼近角秒量级时才需要换用相对论修正。