Resumo executivo
O motor OCSE-Lite (OC Scientific Lunar Engine) implementa as séries analíticas ELP-2000/82B para a Lua, VSOP87D para o Sol, e teorias auxiliares (nutação IAU 2000A, ΔT Espenak-Meeus 2006, refração Bennett/Saemundsson, paralaxe topocêntrica WGS84). Cada release passa por suite de validação automatizada contra dois conjuntos de referência:
- JPL Horizons (NASA / Jet Propulsion Laboratory): dataset seed com 322 pontos cobrindo a janela 1900-2050, com posições geocêntricas e topocêntricas da Lua e do Sol calculadas com efemérides DE numéricas.
- Meeus 1998, Astronomical Algorithms, 2 ed.: exemplos canônicos do livro com valores de referência explícitos (Examples 22.a, 25.b, 47.a entre outros).
Erros típicos contra JPL Horizons
Os valores abaixo são do test_phase11_jpl_horizons.php, executado contra o seed benchmark/data/horizons_moon_seed.csv e horizons_sun_seed.csv. P95 = 95 percentil do erro absoluto. Os limites de tolerância são definidos antes de rodar e não são ajustados a posteriori.
| Métrica | Pontos avaliados | P95 medido | Máximo medido | Limite de tolerância | Status |
|---|---|---|---|---|---|
| Lua RA (arcsec) | 260 | 23.04 | 53.65 | ≤ 35.00 (P95) / ≤ 60.00 (max) | OK |
| Lua Dec (arcsec) | 260 | 8.22 | 24.70 | ≤ 12.00 (P95) / ≤ 30.00 (max) | OK |
| Lua distância (km) | 273 | 39.84 | 45.57 | ≤ 50 (P95) / ≤ 55 (max) | OK |
| Lua altitude topocêntrica (arcsec) | 13 | 43.94 | 43.94 | ≤ 60 (P95) / ≤ 75 (max) | OK |
| Lua azimute (arcsec) | 13 | 15.54 | 15.54 | ≤ 25 (P95) / ≤ 40 (max) | OK |
| Lua iluminação (pontos pp) | 272 | 0.011 | 0.673 | ≤ 0.05 (P95) / ≤ 1.0 (max) | OK |
| Sol RA (arcsec) | 49 | 1.92 | 2.28 | ≤ 5 (P95) / ≤ 8 (max) | OK |
| Sol Dec (arcsec) | 49 | 0.54 | 0.54 | ≤ 2 (P95) / ≤ 3 (max) | OK |
| Sol distância (km) | 49 | 1041.7 | 1328.5 | ≤ 1500 (P95) / ≤ 2000 (max) | OK |
Total: 322 pontos avaliados, 9 métricas em paralelo, todas dentro de tolerância. Resultado: 9 pass, 0 fail. Engine version: OC Scientific Lunar Engine v2.0.0.
Validação contra Meeus 1998
O livro Astronomical Algorithms (Jean Meeus, 2 ed., Willmann-Bell, 1998) traz exemplos numéricos completos para cada algoritmo. Reproduzimos os exemplos canônicos:
| Exemplo Meeus | Algoritmo | Variável | Valor Meeus | Valor motor | Diferença |
|---|---|---|---|---|---|
| 22.a | Nutação IAU 1980 | Δψ | −3.788″ | −3.788″ | ~0″ |
| 22.a | Nutação IAU 1980 | Δε | +9.443″ | +9.443″ | ~0″ |
| 22.a | Obliquidade média | ε₀ | 23°26′27.407″ | 23°26′27.407″ | ~0″ |
| 25.b | VSOP87D Sol | λ aparente | 199.90988° | 199.90611° | −13.58″ |
| 25.b | VSOP87D Sol | Distância | 0.99766 AU | 0.99760 AU | −0.00006 AU |
| 47.a | ELP-2000 Lua | λ eclíptica | 133.162659° | 133.162655° | −0.02″ |
| 47.a | ELP-2000 Lua | β eclíptica | −3.229127° | −3.229126° | +0.00″ |
| 47.a | ELP-2000 Lua | Distância | 368409.7 km | 368409.7 km | ~0 km |
| 47.a | ELP-2000 Lua | Paralaxe horizontal | 0.991990° | 0.991990° | ~0″ |
O exemplo Meeus 47.a (Lua em 1992-04-12 00:00 TD) reproduz todos os valores do livro com erro abaixo de 0.02 arcsec, o que comprova a fidelidade da série ELP-2000/82B implementada (8467 termos preservados após truncagem em 0.0001 arcsec).
Cobertura temporal e degradação de precisão
O motor cobre o intervalo 4000 BC – 3000 AD, que é o limite teórico do polinômio Espenak-Meeus para ΔT. A precisão varia conforme a janela:
| Janela | Erro típico Lua (arcsec) | Erro típico Sol (arcsec) | Erro horário rise/set (s) |
|---|---|---|---|
| 1980-2030 (alta confiança) | ~5 | ~1 | ~3 |
| 1900-2100 (janela útil) | ~10-30 | ~2-5 | ~5-30 |
| 1700-1900 | ~30-60 | ~5-10 | ~30-60 |
| 1500-1700 | ~60-120 | ~10-20 | ~60-120 |
| 500-1500 (medieval) | ~120-300 | ~20-60 | ~120-600 |
| 500 BC – 500 AD (antigo) | ~300-1000 | ~60-180 | ~600-3600 |
| 4000 BC e 3000 AD (extremos) | ~1000-5000 | ~180-600 | ~3600+ |
Limitações conhecidas
O motor não implementa hoje:
- Efemérides numéricas DE440/DE441 da JPL. Usamos séries analíticas, com precisão típica de arcsec em vez de metros.
- Modelo de fotometria Hapke completo. A magnitude aparente da Lua é estimada via fórmula simplificada (~0.2 mag de incerteza).
- Libração física completa (IAU WGCCRE 2015). A libração óptica está em primeira ordem. Para selenografia precisa, a libração física seria adicional.
- Polar motion (xp, yp) atualizado diariamente. Usamos modelo congelado, com erro máximo < 0.5 arcsec, abaixo dos demais erros.
- EOP (Earth Orientation Parameters) em tempo real. O motor é evergreen, sem feed externo.
Essas limitações representam diferença abaixo da resolução do olho humano (60 arcsec) e abaixo da precisão típica de equipamento amador. Para uso recreativo, didático, observacional amador, e divulgação científica, o motor entrega precisão com folga.
Como reproduzir
Toda validação é auditável via scripts no diretório lua/calculadora-lunar/:
php test_phase1_meeus_example.php # Meeus 47.a (Lua) php test_phase3_sun.php # Meeus 25.b (Sol) php test_phase9_nutation.php # Meeus 22.a (Nutação) php test_phase11_jpl_horizons.php # Validação seed Horizons php test_phase11_time_scales.php # Escalas de tempo (UTC, UT1, TAI, TT, TDB) php test_phase0_regression.php # Regressão end-to-end
Os arquivos de seed do Horizons estão em lua/calculadora-lunar/benchmark/data/.
Versão do motor avaliada
| Componente | Versão |
|---|---|
| Engine | OC Scientific Lunar Engine v2.0.0 |
| Modelo de efemérides | OCSE-Lite-2026A |
| Lua | ELP-2000/82B full (8467 termos) |
| Sol | VSOP87D truncado (58 termos) |
| Nutação | IAU 1980 (66 termos) + IAU 2000A opt-in (1365 termos) |
| ΔT | Espenak-Meeus 2006 (9 ramos históricos) |
| Refração | Bennett 1982 / Saemundsson 1986 / None |
| Paralaxe | WGS84 elipsoide topocêntrico |
Veja a metodologia completa em /astronomia/metodologia e a bibliografia em /astronomia/fontes.