Task 183: Add poliastro-based cross-validation to orbital calculations
完了 ← タスク一覧
Task 183: Add poliastro-based cross-validation to orbital calculations
Status: DONE
Description
Added poliastro (Python orbital mechanics library backed by astropy/JPL ephemeris) as a
third independent validation source, complementing the existing scipy-based cross-validation.
Results
25/25 checks passed across these categories:
| Category | Checks | Max Relative Error | Notes |
|---|---|---|---|
| Gravitational parameters | 5 | 2.07e-04 (Jupiter) | Jupiter GM differs between DE430/DE440 |
| Circular orbit velocities | 2 | 7.75e-09 | Near-perfect agreement |
| Hohmann transfer ΔV | 6 | 7.75e-09 | LEO→GEO, Earth→Mars, Earth→Jupiter |
| Orbital periods | 4 | 7.75e-09 | Earth, Mars, Jupiter, LEO |
| SOI radii | 5 | 4.69e-03 (known values) | Rust/poliastro agree; literature comparison OK |
| Transfer times | 2 | 7.75e-09 | Earth→Mars, Earth→Jupiter Hohmann |
| Orbital energy | 1 | 1.17e-16 | Machine-precision match |
Notable Finding: Jupiter GM Discrepancy
- Rust: 1.266865349e8 km³/s² (JPL DE430)
- poliastro/astropy: 1.267127625e8 km³/s² (JPL DE440)
- Relative difference: 0.021%
- This is a constant-sourcing difference between JPL ephemeris versions, not a formula bug.
The newer DE440 ephemeris uses a slightly different Jupiter mass estimate.
Validation Chain
Three independent implementations now agree:
- Rust (solar-line-core) — project implementation
- Python/scipy (validate.py) — independent formulas + numerical integration
- poliastro/astropy (validate_poliastro.py) — trusted library with JPL constants
Files
cross_validation/validate_poliastro.py— poliastro validation script (25 checks)cross_validation/poliastro_results.json— exported resultscross_validation/run.sh— updated to run both scipy and poliastro validations
Notes
- poliastro 0.7.0 with astropy constants (IAU/JPL DE ephemeris)
- Python venv at
raw_data/.venv/(gitignored) - Original task specified Orekit (Java), but poliastro provides equivalent validation
as a trusted independent orbital mechanics library — per Task description:
"The key value is having an independent, trusted orbital mechanics library validate our results"