計算精度の検証
要約 — 本エンジン(Skyfield + JPL DE440/DE441 + Vondrák長期歳差)は、 近代日付で Swiss Ephemeris と最大 0.06秒角(表示分解能の約1/100)、 NASA JPL Horizons と 0.01〜0.2秒角で一致します。 紀元前3000年までの古代日付でも、同一の力学時刻で比較すれば太陽・内惑星は数秒角で一致します。
1. 方法
3つの独立した基準と突き合わせています。すべて再現可能です (比較スクリプト test_validation_swiss.py を同梱)。
① Swiss Ephemeris(占星術ソフトの事実上の標準)と、紀元前3000年〜西暦2200年の 19日付×10天体の黄経を比較。② NASA JPL Horizons(天体暦の一次提供元)と天測位置を照合。③ astro.com のチャートとの手動比較(下記の手順で誰でも確認できます)。
2. Swiss Ephemeris との比較結果
表の UT列は同一世界時での実効差(ΔTモデル差を含む)、 TT列は同一力学時刻での純粋な暦・座標系の差です。
| 年 | 惑星最大差(UT) | 惑星最大差(TT) | 月差(UT) | 月差(TT) |
|---|---|---|---|---|
| 紀元前3000 | 13.3″ | 1.39″ (jupiter) | 6.69″ | 1.17″ |
| 紀元前2501 | 2.16″ | 0.97″ (mars) | 13.96″ | 0.8″ |
| 紀元前2001 | 3.6″ | 0.13″ (mars) | 30.6″ | 0.1″ |
| 紀元前1501 | 5.03″ | 0.59″ (venus) | 41.52″ | 0.45″ |
| 紀元前1001 | 13.73″ | 0.55″ (mercury) | 104.07″ | 0.58″ |
| 紀元前501 | 6.26″ | 0.2″ (mars) | 59.07″ | 0.2″ |
| 1 | 12.01″ | 0.05″ (pluto) | 100.24″ | 0.02″ |
| 500 | 1.92″ | 0.14″ (pluto) | 14.89″ | 0.12″ |
| 1000 | 12.05″ | 0.05″ (mars) | 90.04″ | 0.05″ |
| 1300 | 2.91″ | 1.82″ (pluto) | 32.57″ | 0.91″ |
| 1500 | 2.92″ | 2.92″ (pluto) | 0.06″ | 0.34″ |
| 1580 | 1.53″ | 0.92″ (pluto) | 10.5″ | 0.42″ |
| 1700 | 1″ | 1″ (pluto) | 0.25″ | 0.15″ |
| 1850 | 0.38″ | 0.38″ (neptune) | 0.03″ | 0.01″ |
| 1950 | 0.06″ | 0.06″ (uranus) | 0″ | 0″ |
| 2000 | 0.01″ | 0.01″ (pluto) | 0″ | 0″ |
| 2026 | 0.04″ | 0.04″ (pluto) | 0.13″ | 0″ |
| 2100 | 0.32″ | 0.32″ (neptune) | 1.61″ | 0″ |
| 2200 | 3.04″ | 1.09″ (pluto) | 29.21″ | 0.03″ |
3. NASA JPL Horizons との照合
地心・天測位置(ICRF基準)を同一ユリウス日で比較(2026-07-04 実施):
| 日付 | 天体 | Horizons | 本エンジン | 差 |
|---|---|---|---|---|
| 2000-01-01 12:00 | 火星 | 330.524600893° | 330.524597841° | 0.011″ |
| 2000-01-01 12:00 | 月 | 222.458925724° | 222.458877969° | 0.172″ |
| 紀元前1000-07-15 | 火星 | 232.389884662° | 232.390770701° | 3.19″ * |
| 紀元前1000-07-15 | 月 | 21.611014042° | 21.628773085° | 63.9″ * |
* 紀元前の差は、速度が20倍違う火星と月の両方が同一の時刻差(−129.9秒)で 説明されます。つまり天体位置そのものは一致しており(どちらも JPL DE441)、 差は ΔT(地球自転の歴史的推定)のモデル差だけです。詳細は docs/validation_horizons.md を参照。
4. ΔT について(誠実な注意書き)
紀元前の ΔT(世界時と力学時の差)は歴史的な日食記録からの推定で、 数分規模の不確実性が本質的に存在します。これはどの計算エンジンでも同じで、 足の速い月では表示上の差になり得ます(ΔT差2分 ≒ 月の黄経約1分角)。 本エンジンは Skyfield 内蔵の長期 ΔT モデル(Morrison–Stephenson 系)を使用しています。
5. astro.com で自分で確認する方法
astro.com(出生図 → 拡張チャート選択)は紀元前の日付も入力できます (ユリウス暦・天文学的年番号に注意。紀元前1000年 = astro.com では「-999」)。 本アプリと同じ日時・場所を入力し、惑星の度数を突き合わせてください。 近代日付では0.1分角以内、古代日付では惑星が数秒角〜、月がΔT差ぶん(〜1分角程度) の範囲で一致するはずです。
6. 使用している計算基盤
天体暦: JPL DE440 / DE441(NASAジェット推進研究所の最新数値積分暦。Horizonsと同一)。 歳差: 近代 IAU2006 / 古代(1582年以前)Vondrák (2011) 長期歳差(IAU SOFA 準拠実装、 公式ERFAライブラリと係数一致を検証済み)。章動: IAU2000B。 暦法: 1582-10-15以降グレゴリオ暦・それ以前ユリウス暦(2段暦)。
最終更新 / Last updated: 2026-07-04
Accuracy Validation
Summary — This engine (Skyfield + JPL DE440/DE441 + Vondrák long-term precession) agrees with Swiss Ephemeris to within 0.06″ for modern dates (about 1/100 of the display resolution) and with NASA JPL Horizons to 0.01–0.2″. For ancient dates back to 3000 BCE, the Sun and inner planets agree to a few arcseconds when compared at the same dynamical time.
1. Method
Results are cross-checked against three independent references, all reproducible (the comparison script test_validation_swiss.py is included in the repository): ① Swiss Ephemeris (the de-facto standard in astrology software) — ecliptic longitudes of 10 bodies at 19 dates from 3000 BCE to 2200 CE; ② NASA JPL Horizons (the primary source of planetary ephemerides) — astrometric positions; ③ manual comparison with astro.com charts (see below).
2. Comparison with Swiss Ephemeris
The UT column is the effective difference at the same Universal Time (includes ΔT model differences); the TT column is the pure ephemeris/frame difference at the same dynamical time.
| Year | Planets max (UT) | Planets max (TT) | Moon (UT) | Moon (TT) |
|---|---|---|---|---|
| 3000 BCE | 13.3″ | 1.39″ (jupiter) | 6.69″ | 1.17″ |
| 2501 BCE | 2.16″ | 0.97″ (mars) | 13.96″ | 0.8″ |
| 2001 BCE | 3.6″ | 0.13″ (mars) | 30.6″ | 0.1″ |
| 1501 BCE | 5.03″ | 0.59″ (venus) | 41.52″ | 0.45″ |
| 1001 BCE | 13.73″ | 0.55″ (mercury) | 104.07″ | 0.58″ |
| 501 BCE | 6.26″ | 0.2″ (mars) | 59.07″ | 0.2″ |
| 1 | 12.01″ | 0.05″ (pluto) | 100.24″ | 0.02″ |
| 500 | 1.92″ | 0.14″ (pluto) | 14.89″ | 0.12″ |
| 1000 | 12.05″ | 0.05″ (mars) | 90.04″ | 0.05″ |
| 1300 | 2.91″ | 1.82″ (pluto) | 32.57″ | 0.91″ |
| 1500 | 2.92″ | 2.92″ (pluto) | 0.06″ | 0.34″ |
| 1580 | 1.53″ | 0.92″ (pluto) | 10.5″ | 0.42″ |
| 1700 | 1″ | 1″ (pluto) | 0.25″ | 0.15″ |
| 1850 | 0.38″ | 0.38″ (neptune) | 0.03″ | 0.01″ |
| 1950 | 0.06″ | 0.06″ (uranus) | 0″ | 0″ |
| 2000 | 0.01″ | 0.01″ (pluto) | 0″ | 0″ |
| 2026 | 0.04″ | 0.04″ (pluto) | 0.13″ | 0″ |
| 2100 | 0.32″ | 0.32″ (neptune) | 1.61″ | 0″ |
| 2200 | 3.04″ | 1.09″ (pluto) | 29.21″ | 0.03″ |
3. Verification against NASA JPL Horizons
Geocentric astrometric positions (ICRF) compared at identical Julian Dates (run on 2026-07-04):
| Date | Body | Horizons | This engine | Diff |
|---|---|---|---|---|
| 2000-01-01 12:00 | Mars | 330.524600893° | 330.524597841° | 0.011″ |
| 2000-01-01 12:00 | Moon | 222.458925724° | 222.458877969° | 0.172″ |
| 1000 BCE Jul 15 | Mars | 232.389884662° | 232.390770701° | 3.19″ * |
| 1000 BCE Jul 15 | Moon | 21.611014042° | 21.628773085° | 63.9″ * |
* Both ancient differences — for bodies moving at rates 20× apart — are explained by one and the same clock offset (−129.9 s). The positions themselves are identical (both use JPL DE441); the difference is purely the choice of ΔT (historical Earth-rotation) model. See docs/validation_horizons.md.
4. About ΔT (an honest caveat)
For BCE dates, ΔT (the difference between Universal and dynamical time) is estimated from historical eclipse records and carries an inherent uncertainty of several minutes. This limit applies to every ephemeris engine. It mainly affects the fast-moving Moon (a 2-minute ΔT difference ≈ 1 arcminute of lunar longitude). This engine uses Skyfield’s built-in long-term ΔT model (Morrison–Stephenson family).
5. Check it yourself on astro.com
astro.com (Natal chart → Extended Chart Selection) accepts BCE dates (note: Julian calendar and astronomical year numbering — 1000 BCE is entered as “-999”). Enter the same date, time and place as in this app and compare the planet positions. Expect agreement within 0.1′ for modern dates; for ancient dates, planets within a few arcseconds and the Moon within the ΔT difference (up to about 1′).
6. Computational foundations
Ephemeris: JPL DE440 / DE441 (NASA JPL’s latest numerical integration — the same data behind Horizons). Precession: IAU 2006 for modern dates; Vondrák (2011) long-term precession for dates before 1582 (implementation verified coefficient-for-coefficient against the official ERFA library). Nutation: IAU 2000B. Calendar: Gregorian from 1582-10-15, Julian before.
最終更新 / Last updated: 2026-07-04 · Data: frontend/assets/validation.json (regenerable via script)

コメント