这篇科普用一颗真实卫星的公开数据,回答"轨道为什么需要被持续跟踪"。文中所有数字都来自公开数据, 你(或任何 AI agent)都可以重跑验证——见文末附录。

先别往下翻

一颗在 400 公里高空飞行的卫星,如果不去管它,轨道一年会掉多少?
(在心里给一个答案,再往下看。)

卫星其实一直在"掉"

"卫星悬在太空"是个错觉。400 公里的高度,其实还没真正走出地球大气层——那里的空气极其稀薄,但确实存在。每一圈掠过,稀薄大气都会拖慢卫星一点。速度一降,轨道变低;轨道变低,空气更密,拖得更狠。这是一个不断自我加强的过程。

所以更准确的说法是:每一颗卫星都在缓慢下落,只是慢到平时察觉不到。 掉得快还是慢,取决于轨道高度和太阳活动——太阳越活跃,大气层越膨胀,卫星掉得越快。

拿真实数据看一次"掉落"

空口说"在掉"没有用。我们拿一颗真实的卫星,用公开数据算给你看。

国际空间站(ISS),1998 年发射,2000 年 11 月起持续有人驻守,是人类飞行时间最长的航天器,就飞在约 400 公里的高空。它的轨道数据(TLE,一种公开的轨道要素格式)由公开机构发布,人人可下载。以下是 2026 年 8 月 14 日的实测数据:

轨道高度≈ 418.3 km
轨道周期92.94 分钟(约 1 小时 33 分)
瞬时衰减速率≈ 15 米/天(≈ 0.5 公里/月)
数据来源CelesTrak 公开 TLE(NORAD 编号 25544)
数据快照哈希sha256 da99457ef3417b3383d2e0c5bff92dbbec9ee132a889bb6ace06ae8786e3afaf

现在回到开头的问题。按当前速率粗略外推,一年约 5-6 公里。对一个飞在 400 公里高空的物体来说,这个数字不大——只有它轨道半径的千分之几。

但你发现一件怪事:既然在掉,ISS 为什么几十年一直稳定在 400 公里附近?

因为它在被不断"顶上去"。 ISS 大约每个月做一次轨道提升(reboost):用对接飞船的推进器点火,把轨道重新抬起来。2026 年 1 月,SpaceX 的龙飞船甚至把它抬到了 422 公里——历史最高。每月一次点火,就是为了对抗那每月不到 1 公里的下坠。

为什么要一直盯着

"掉得慢"不等于"不用管"。持续跟踪轨道,背后是三个真实需求:

1. 轨控要算得准。 什么时候点火、烧多少燃料,都取决于此刻的轨道位置和衰减速度。算错一点可以补回来;长期失准,燃料耗尽,就真的补不回来了。

2. 碰撞风险判断要精确。 近地轨道上有数万个可追踪的碎片。判断会不会撞上,要用双方的高精度轨道,计算几公里尺度的最近距离。轨道数据越旧,这个判断越不可信。

3. 地面要能"找到"它。 测控站、光学望远镜要对准一颗卫星,也得先知道它下一秒在哪——轨道就是唯一的答案。

一句话:不跟踪,就会丢。 对航天器所有者来说,这是一个成本问题:轨道是资产,不维护就贬值,直到坠入稠密大气烧毁。ISS 的寿命计划是约 2030 年受控再入,在那之前,它靠的就是每月一次、雷打不动的轨道维持。

你可以自己验

到这里为止的所有数字,都不是"我们说的",而是公开数据算出来的。TLE 轨道数据在 CelesTrak 等平台人人可下载,计算用的是公开的天体力学公式。

我们把这次分析做成了可复现脚本:下载数据 → 算出高度、周期、衰减 → 输出哈希。你(或任何 AI agent)都可以重跑一遍核对数字,见附录。

附录:可复现验证

python3 verify_iss.py                     # 实时:下载最新 TLE 并核对方法
python3 verify_iss.py iss_20260814.tle    # 精确:复现本文 2026-08-14 数据快照

脚本会做三件事:

1. 读取 CelesTrak 的 ISS 当前 TLE(或指定的冻结快照文件);
2. 计算轨道高度、周期、瞬时衰减速率;
3. 输出数据表与快照 sha256,供与上文核对。

说明:默认实时模式下载最新 TLE,数值会随历元微调;指定 iss_20260814.tle 冻结快照可精确复现正文表格的数字与哈希 da99457ef3417b3383d2e0c5bff92dbbec9ee132a889bb6ace06ae8786e3afaf验证层级(可复现≠可验证):TLE 原始两行要素为 primary——美国太空部队 18 空间防御中队官方编目,经 CelesTrak 公开镜像,冻结快照内嵌原始 TLE 可逐字比对;高度/周期/衰减速率为脚本从 TLE 重算的派生值。

原始材料(可直接复制)

下面的脚本与数据快照全文,供你(或任何 AI agent)直接复制使用,无需下载。

复现材料(含 sha256 锚点,随嵌入文件自动更新):
verify_iss.py(复现脚本) · sha256 d389ccb0a16a857b078ed2defd99a747b784f7ffa59af0fac37917ed8579f8bf
iss_20260814.tle(数据快照) · sha256 da99457ef3417b3383d2e0c5bff92dbbec9ee132a889bb6ace06ae8786e3afaf

verify_iss.py — 复现脚本全文

#!/usr/bin/env python3
# verify_iss.py — 科普附录:验证 ISS 轨道衰减(零依赖)
# 输入:CelesTrak 公开 TLE(NORAD 25544 / ISS)
# 输出:轨道高度 / 周期 / 瞬时衰减速率 / 快照 sha256
# 用法:python3 verify_iss.py      (联网下载最新 TLE)
#       python3 verify_iss.py FILE  (用本地 TLE 文件)
# 退出码:0 成功;1 下载失败;2 解析失败
import hashlib
import sys
import urllib.request
from math import pi

MU = 398600.4418   # 地球引力常数 km^3/s^2
RE = 6378.137      # 地球赤道半径 km
CATNR = 25544      # ISS NORAD 编号
URL = f"https://celestrak.org/NORAD/elements/gp.php?CATNR={CATNR}&FORMAT=TLE"


def fetch(path=None):
    if path:
        with open(path, "rb") as f:
            raw = f.read()
    else:
        req = urllib.request.Request(URL, headers={"User-Agent": "chenji-iss-verify"})
        raw = urllib.request.urlopen(req, timeout=20).read()
    return raw


def parse_tle(raw):
    text = raw.decode("utf-8", errors="replace").splitlines()
    l1 = next((l for l in text if l.startswith("1 ")), None)
    l2 = next((l for l in text if l.startswith("2 ")), None)
    if not l1 or not l2:
        raise ValueError("TLE 格式无法解析")
    ndot = float(l1[33:43])       # rev/day^2
    mm = float(l2[52:63])         # rev/day
    return ndot, mm


def main():
    path = sys.argv[1] if len(sys.argv) > 1 else None
    raw = fetch(path)
    sha = hashlib.sha256(raw).hexdigest()

    try:
        ndot, mm = parse_tle(raw)
    except Exception as e:
        print(f"ERROR: {e}", file=sys.stderr)
        return 2

    period_min = 1440.0 / mm
    period_s = period_min * 60.0
    a = (MU * (period_s / (2 * pi)) ** 2) ** (1 / 3)   # 长半轴 km
    alt = a - RE                                        # 平均高度 km
    decay_km_day = -(2.0 / 3.0) * (a / mm) * ndot        # km/day

    print("=== ISS 轨道衰减验证(CelesTrak 公开 TLE,NORAD 25544)===")
    print(f"轨道高度      ≈ {alt:6.1f} km")
    print(f"轨道周期      ≈ {period_min:6.2f} min")
    print(f"瞬时衰减速率  ≈ {abs(decay_km_day) * 1000:5.0f} m/day"
          f"(≈ {abs(decay_km_day) * 30:4.1f} km/月)")
    print("-" * 46)
    print("证据层级: primary(可复现≠可验证)")
    print("出处定位: CelesTrak 公开 TLE(NORAD 25544)——镜像自美国太空部队 18 空间防御")
    print("          中队官方编目(Space-Track),免费公开 API 获取")
    print("说明: 原始两行要素为官方编目(primary);高度/周期/衰减速率由脚本从 TLE 重算")
    print("-" * 46)
    print(f"TLE 快照 sha256: {sha}")
    print("验证方式:任意时刻重跑本脚本,与文章正文数据表核对。")
    return 0


if __name__ == "__main__":
    sys.exit(main())

iss_20260814.tle — 数据快照全文

ISS (ZARYA)             
1 25544U 98067A   26226.82569811  .00005167  00000+0  10032-3 0  9995
2 25544  51.6328   9.8801 0007567  46.9314 313.2307 15.49444701580848

你该带走什么

卫星并不是"悬在太空",而是一直在下落,只是慢得平时察觉不到;它靠定期轨道提升对抗下坠。轨道是资产——不维护就贬值。"要不要持续跟踪"不是技术问题,是成本问题。

数据来源:CelesTrak —— 国际空间站(NORAD 25544)公开 TLE。
历史背景:NASA / Space-Track 公开记录 —— ISS 轨道维持、龙飞船 2026-01 抬升 422 km、约 2030 年受控再入。

可验证声明 印记等级:完整可复现