# 几何位置：DE441 与全量理论对照

[中文首页](../README.md) · [English README](../README.en.md) · [精度与适用范围](./accuracy.md)

## 方法与限制

本次对照日期为 2026-09-02；不修改或重新拟合任何生产系数。参考值为 JPL DE441，
比较的是同一时刻、同一中心、转换到 ICRF 方向约定后的几何位置向量。
不包含光行时、光行差、章动、观测者视差，也不测试速度或天象事件的求根误差。

- 每个区间独立取 2,048 个分层随机日期，另加两端点，共 **2,050 个日期**；
  所有模型在同一区间使用完全相同的日期。NumPy `default_rng` / PCG64，种子 `2026090201`。
- 年份定义为儒略年 `y = 2000 + (JD − 2451545) / 365.25`，不是逐个民用年元旦。
  抽样区间依次为 `1600..2200`、`-1000..3000`、`-6000..10000`，天文年 0 表示公元前 1 年。
- 输入使用相同数值 JD：本库按 TT 接收，DE441 按 TDB 求值，未在本测试中另作 TT–TDB 换算。
  这是模型对照，不是高精度时间尺度验收。
- 单点误差是 `||r_model − r_DE441||₂`；RMS 是这个三维距离误差的均方根，
  不是将三个分量再除以 √3。表内最大值是**样本最大值**，不是连续区间上界。
- 本库曾按 DE441 校准。VSOP87A 的原始拟合基准是 DE200；VSOP2013/TOP2013 是 INPOP10a；
  此处 ELP/MPP02 使用 DE405 拟合参数及其发布的长期角度修正，ELP2000-82B 使用 DE200/LE200 常数。
  未给全量理论额外拟合 DE441，也没有按这次结果调整系数。
- 宽年代列包含原始理论超出其设计／验证范围的外推，只用于展示差异增长；
  不能据此把本库整个 `-6000..10000` 区间声明为统一高精度，或把其他理论判为失效。
- 各模型体积、项数和计算成本不同。本次不比较速度，也不是同预算截断实验。
  “全量”指完整公开系数表，不意味着无限项的解析理论或零误差。

### 中心与坐标系

水星、金星、火星及外行星对照 DE441 的对应系统质心，减去太阳位置。
地月质心对照 `(0,3) − (0,10)`；物理地球中心为 `(0,3) + (3,399) − (0,10)`。
月球地心参考为 `(3,301) − (3,399)`，不与地月质心位置混用。

本库 `embPosition()` 由库内物理地球与月球模型重建质心，未借用 DE441 月球来消除自身误差。
VSOP2013 的第 3 体与 VSOP87A 的 `.emb` 直接给出地月质心。

各理论自己的“J2000 黄道”不自动等于相同坐标系。本次使用固定的源模型转换：

| 模型 | 转换到比较参考系 |
| --- | --- |
| 本库 | IAU 2006 J2000 倾角及 Vondrák 2011 带框架偏置的岁差矩阵之逆，与现有位置测试一致 |
| VSOP87A | 官方使用说明的 J2000 黄道 → FK5 矩阵，再乘 ERFA `fk5hip()` 的固定 J2000 FK5 → Hipparcos/ICRS 方向矩阵；不加入恒星自行旋转 |
| VSOP2013 / TOP2013 | 官方矩阵，`ε = 23°26′21.41136″`、`φ = −0.05188″`；使用其 AU 值 `149597870.691 km` |
| ELP2000-82B | 官方说明第 8 节的专用黄道 → FK5 矩阵，再接上述固定 FK5 → ICRS 方向转换 |
| ELP/MPP02 | 原始说明 Table 7 的 JPL405 参数行：`ε = 23°26′21.40960″`、`φ = −0.05028″`，与本次 DE405 拟合常数匹配 |

旧星历到现代 ICRF 的方向联系本身也有不确定性；这里使用发布的固定联系，
没有通过拟合测试样本消掉整体旋转。ELP/MPP02 的 JPL405 坐标系作为 ICRF 对齐的参考系使用，
未另拟合 DE405–DE441 的微小方向差。结果不应被解读为排除了所有框架差异的纯轨道理论误差。

## 行星全量对照

单位 km，单元格为 **RMS / 样本最大值**。本库为位置 `accurate` 档。
VSOP87 使用 **A 版**日心直角坐标完整表，不是 B/D 版，也不是某个应用的二次截断表。
TOP2013 使用公开的 **TOP2013LBR.dat** 全量直接坐标表，不与其轨道根数版混称为同一组数值。

求值器另行核对了官方控制文件：VSOP87A 的 90 组 XYZ、VSOP2013 的 88 组 XYZ，
以及 TOP2013LBR 的 44 组 L/B/R。最大分量差均小于 `6×10⁻¹¹`
（XYZ 为 AU，L/B 为 rad，R 为 AU），与控制文件保留的小数位一致。

### 1600～2200

| 对象 | 本库 accurate | VSOP87A 全量 | VSOP2013 全量 | TOP2013 全量 |
| --- | ---: | ---: | ---: | ---: |
| 水星 | 6.05 / 27.1 | 14.8 / 32.1 | 5.71 / 19.8 | — |
| 金星 | 10.5 / 32.8 | 23.5 / 44.6 | 4.47 / 12.3 | — |
| 地月质心¹ | 14.8 / 47.3 | 46.6 / 108 | 3.04 / 8.50 | — |
| 火星 | 40.6 / 128 | 242 / 642 | 12.3 / 31.2 | — |
| 木星 | 80.7 / 280 | 1,100 / 2,168 | 32.6 / 48.7 | 32.8 / 49.7 |
| 土星 | 91.2 / 326 | 2,012 / 4,051 | 8.83 / 18.1 | 13.1 / 47.9 |
| 天王星 | 373 / 1,047 | 17,345 / 54,386 | 16,825 / 32,762 | 16,855 / 32,870 |
| 海王星 | 791 / 2,279 | 55,682 / 110,649 | 5,152 / 9,530 | 5,096 / 9,348 |

### −1000～3000

| 对象 | 本库 accurate | VSOP87A 全量 | VSOP2013 全量 | TOP2013 全量 |
| --- | ---: | ---: | ---: | ---: |
| 水星 | 8.09 / 29.3 | 284 / 892 | 447 / 1,426 | — |
| 金星 | 25.2 / 96.6 | 599 / 1,564 | 338 / 869 | — |
| 地月质心¹ | 26.1 / 125 | 393 / 1,287 | 260 / 632 | — |
| 火星 | 106 / 428 | 2,345 / 5,058 | 472 / 1,820 | — |
| 木星 | 431 / 1,678 | 9,562 / 40,291 | 262 / 1,192 | 186 / 585 |
| 土星 | 1,275 / 4,413 | 41,535 / 186,152 | 4,475 / 20,215 | 651 / 2,652 |
| 天王星 | 5,834 / 19,440 | 386,669 / 748,057 | 131,437 / 269,362 | 133,719 / 272,132 |
| 海王星 | 3,430 / 11,342 | 584,434 / 1,141,237 | 40,434 / 76,645 | 38,821 / 75,376 |

### −6000～10000

| 对象 | 本库 accurate | VSOP87A 全量 | VSOP2013 全量 | TOP2013 全量 |
| --- | ---: | ---: | ---: | ---: |
| 水星 | 25.8 / 156 | 2,415 / 9,232 | 3,988 / 11,094 | — |
| 金星 | 95.8 / 480 | 3,857 / 13,807 | 2,738 / 6,001 | — |
| 地月质心¹ | 99.4 / 479 | 2,652 / 11,820 | 17,290 / 96,149 | — |
| 火星 | 412 / 2,539 | 10,126 / 43,114 | 7,784 / 44,878 | — |
| 木星 | 768 / 3,594 | 1,639,412 / 12,255,385 | 146,083 / 930,468 | 21,929 / 141,853 |
| 土星 | 2,367 / 20,124 | 7,062,403 / 48,010,597 | 1,325,825 / 9,853,731 | 25,260 / 155,576 |
| 天王星 | 14,620 / 57,663 | 710,692 / 2,956,281 | 461,150 / 2,589,960 | 459,390 / 1,125,077 |
| 海王星 | 5,942 / 24,290 | 1,595,204 / 3,268,229 | 236,897 / 1,478,960 | 99,591 / 309,206 |

¹ 地月质心说明见上文。作为补充，物理地球中心的 RMS / 样本最大值为：

| 区间 | 本库 accurate | VSOP87A `.ear` 全量 |
| --- | ---: | ---: |
| 1600～2200 | 14.8 / 47.3 | 46.6 / 108 |
| −1000～3000 | 26.1 / 125 | 394 / 1,259 |
| −6000～10000 | 99.4 / 479 | 2,656 / 11,933 |

## 月球全量对照

地心三维位置，单位 km，**RMS / 样本最大值**：

| 模型 | 1600～2200 | −1000～3000 | −6000～10000 |
| --- | ---: | ---: | ---: |
| 本库 accurate | 0.275 / 0.855 | 0.468 / 1.96 | 2.28 / 11.0 |
| ELP/MPP02 全量（DE405 参数） | 0.058 / 0.207 | 50.7 / 158 | 1,290 / 3,938 |
| ELP2000-82B 全量 | 9.49 / 27.4 | 666 / 1,869 | 5,327 / 15,568 |

ELP/MPP02 使用未经本库再截断、再校准的全量 DE405 参数表；其原生坐标已核对
原始说明 Table 8.a 的 5 组控制值。ELP2000-82B 使用 CDS VI/79 的官方 Fortran
`ELP82B`，`prec = 0`，读取全部 36 个数据文件；编译时使用 `-fno-automatic`
保留旧 Fortran 子程序初始化后的局部数组，避免多次调用时状态丢失。

## 本库三个位置档位

下表全部直接对照 **DE441**，不是 fast／mid 对 accurate 的差。
默认位置档位为 accurate；定气定朔的同名档位还切换事件模型和求根路线，不能套用此表估算秒数。
单位 km，**RMS / 样本最大值**。

### 1600～2200

| 对象 | Fast | Mid | Accurate |
| --- | ---: | ---: | ---: |
| 水星 | 21.8 / 76.1 | 7.90 / 31.1 | 6.05 / 27.1 |
| 金星 | 31.4 / 84.7 | 12.5 / 32.5 | 10.5 / 32.8 |
| 地球中心 | 227 / 642 | 31.0 / 97.1 | 14.8 / 47.3 |
| 火星 | 91.1 / 275 | 42.7 / 130 | 40.6 / 128 |
| 木星 | 541 / 1,812 | 110 / 304 | 80.7 / 280 |
| 土星 | 1,369 / 3,388 | 258 / 695 | 91.2 / 326 |
| 天王星 | 8,513 / 18,598 | 1,104 / 2,576 | 373 / 1,047 |
| 海王星 | 9,900 / 18,837 | 1,499 / 3,146 | 791 / 2,279 |
| 月球 | 3.94 / 13.8 | 0.594 / 1.95 | 0.275 / 0.855 |

### −1000～3000

| 对象 | Fast | Mid | Accurate |
| --- | ---: | ---: | ---: |
| 水星 | 21.5 / 65.1 | 9.46 / 30.8 | 8.09 / 29.3 |
| 金星 | 38.9 / 122 | 26.1 / 96.0 | 25.2 / 96.6 |
| 地球中心 | 232 / 731 | 36.9 / 144 | 26.1 / 125 |
| 火星 | 130 / 462 | 106 / 429 | 106 / 428 |
| 木星 | 681 / 2,708 | 435 / 1,697 | 431 / 1,678 |
| 土星 | 1,776 / 5,853 | 1,289 / 4,529 | 1,275 / 4,413 |
| 天王星 | 10,159 / 24,192 | 5,895 / 19,376 | 5,834 / 19,440 |
| 海王星 | 9,450 / 23,035 | 3,553 / 10,460 | 3,430 / 11,342 |
| 月球 | 4.04 / 12.6 | 0.724 / 2.71 | 0.468 / 1.96 |

### −6000～10000

| 对象 | Fast | Mid | Accurate |
| --- | ---: | ---: | ---: |
| 水星 | 32.8 / 192 | 26.3 / 163 | 25.8 / 156 |
| 金星 | 99.6 / 504 | 95.9 / 478 | 95.8 / 480 |
| 地球中心 | 246 / 824 | 102 / 442 | 99.4 / 479 |
| 火星 | 418 / 2,533 | 412 / 2,544 | 412 / 2,539 |
| 木星 | 919 / 4,009 | 770 / 3,572 | 768 / 3,594 |
| 土星 | 2,566 / 22,139 | 2,373 / 20,338 | 2,367 / 20,124 |
| 天王星 | 16,570 / 63,499 | 14,621 / 57,831 | 14,620 / 57,663 |
| 海王星 | 10,287 / 29,799 | 5,968 / 24,279 | 5,942 / 24,290 |
| 月球 | 4.58 / 15.9 | 2.34 / 10.9 | 2.28 / 11.0 |

本次未比较冥王星：它采用独立近区拟合与宽年代后备模型，且推荐范围不同。
其限制见[冥王星精度说明](./accuracy.md#冥王星)。

## 复现

仓库内提供 [比较脚本](https://github.com/RedSC1/js-ephemeris-lite/blob/main/tools/benchmark-full-models.py)、
[ELP82B 调用驱动](https://github.com/RedSC1/js-ephemeris-lite/blob/main/tools/benchmark-elp82-driver.f90)
和[未取整指标及 SHA-256 清单](https://github.com/RedSC1/js-ephemeris-lite/blob/main/tools/benchmarks/model-accuracy.json)。
大型原始星历、系数文件和 Fortran 二进制不随 npm 包分发。

需要 Python 3.9+、NumPy、jplephem、pyerfa、Node.js，以及编译 ELP82B 的 gfortran。
外部数据路径由调用者提供；脚本要求输出目录为空，防止误用旧模型缓存。
`--elp-module` 接受 ES module，导出 `elpmpp02(daysSinceJ2000)`，返回全量 DE405 模式的
J2000 原生黄道 XYZ（km）；本次使用的完整模块及数据文件哈希保存在清单中。
清单也记录 DE441 参考文件、提供基本角和平均运动常数的 `VSOP2013.f`，
以及 ELP82B 驱动源码和实际运行二进制的 SHA-256。二进制哈希可能随编译器及平台变化，
应结合源码哈希核对；大型内核采用分块哈希，不需一次性载入内存。

```sh
gfortran -O2 -std=legacy -fno-automatic \
  tools/benchmark-elp82-driver.f90 "$ELP82_DIR/elp82b.f" \
  -o /tmp/benchmark-elp82

python3 tools/benchmark-full-models.py \
  --vsop87 "$VSOP87_DIR" \
  --vsop2013 "$VSOP2013_DIR" \
  --top2013 "$TOP2013_DIR" \
  --elp-module "$FULL_ELP_MODULE" \
  --elp82-data "$ELP82_DIR" \
  --elp82-binary /tmp/benchmark-elp82 \
  --de441 "$DE441_FILE" \
  --out /tmp/model-comparison-new
```

可用 `--samples 8` 做小样本接线检查，但 README 数字使用默认 `2048 + 2` 个日期。
生成器不执行模型训练、选项数或残差拟合；任何生产系数更新后都应重新运行，不能沿用本次数字。

### 原始资料

- [JPL DE440 / DE441](https://ssd.jpl.nasa.gov/planets/eph_export.html)
- [VSOP87 使用说明与完整数据，CDS VI/81](https://cdsarc.cds.unistra.fr/ftp/VI/81/)
- [VSOP2013 官方发布](https://ftp.imcce.fr/pub/ephem/planets/vsop2013/)
- [TOP2013 官方发布](https://ftp.imcce.fr/pub/ephem/planets/top2013/)
- [ELP2000-82B 官方发布与坐标说明](https://ftp.imcce.fr/pub/ephem/moon/elp82b/)
- [ELP2000-82B 目录说明，CDS VI/79](https://cdsarc.cds.unistra.fr/viz-bin/ReadMe/VI/79?format=html&tex=true)
- [ELP/MPP02 原始技术说明的镜像](https://sourceforge.net/projects/gplan/files/Astronomy%20on%20VBA/elpmpp02-2.pdf/download)
- [Chapront & Francou (2003)，ELP/MPP02 论文](https://doi.org/10.1051/0004-6361:20030529)
