integrate_hamiltonian — MATH numerics op

• Data kinds: signal × signal → table

• Call: import fullseye as fs; fs.ledger.integrate_hamiltonian(q0, p0, dt: 'float' = 0.05, n_steps: 'int' = 1000, *, system: 'str' = 'harmonic', method: 'str' = 'verlet', **params) -> 'dict' (implementation को सीधे call करना हो तो import mathnumerics; mathnumerics.integrate_hamiltonian(q0, p0, dt: 'float' = 0.05, n_steps: 'int' = 1000, *, system: 'str' = 'harmonic', method: 'str' = 'verlet', **params) -> 'dict', registry से लेना हो तो opsmath.get("integrate_hamiltonian"))

उपयोग

नाम वाले Hamiltonian system (mass 1) को समय में integrate करता है। return value {"t","q","p","energy","energy_drift"}।

method:

• "verlet" —— velocity Verlet (symplectic, time-reversal symmetric)। energy error O(dt²) पर सीमित रहती है और oscillate करती है; लंबे समय में भी नहीं बढ़ती। ऋणात्मक dt से चलाने पर मूल अवस्था में लौट आता है (rounding error तक)।

• "euler" —— explicit Euler (तुलना के लिए विफलता का उदाहरण)। harmonic oscillator के लिए energy हर step में (1 + ω²dt²) गुना बढ़ती है, जिससे phase space में बाहर की ओर spiral बनता है।

• "rk4" —— classical 4th-order Runge–Kutta। छोटे समय में बहुत सटीक, पर symplectic नहीं है इसलिए लंबे समय में energy धीरे-धीरे घटती रहती है (सीमित नहीं)।

system: "harmonic" (omega) / "pendulum" (omega) / "kepler" (mu, 2-D)।

Gate: Verlet की energy error सीमित है / time reversal लौटता है / Euler का amplification factor (1 + ω²dt²)^n है।

पूरी family का input contract (fail-closed)

mathops के सभी ops गणना से पहले input की जाँच करते हैं (कुछ भी चुपचाप पास नहीं होता):

• complex input से ValueError — float64 में ज़बरदस्ती बदलने पर imaginary part चुपचाप छूट जाता है (numpy केवल ComplexWarning देता है और "सही दिखने वाला पर गलत" real number लौटाता है)। .real/.imag/abs() स्पष्ट रूप से लिखें, या complex data संभालने वाले complexops का उपयोग करें।

• masked array (masked elements वाला) से ValueError — mask हटाकर नीचे के raw values इस्तेमाल करने वाला implicit conversion अस्वीकार है। भरना है या हटाना है, यह स्पष्ट रूप से बताएँ।

• हर input पर NaN/Inf से ValueError (गिनती बताकर अस्वीकार — क्योंकि यह पूरे परिणाम में फैल जाता है)।

• Shape सख़्त है: 1-D और 2-D को implicit रूप से promote या broadcast नहीं किया जाता (vector slot में matrix या matrix slot में vector देने पर ValueError; reshape स्पष्ट रूप से करें)।

• Size की सीमा: matrix लेने वाले ops और stat_histogram के bins, mathops.MAX_ELEMENTS (2^26 ≈ 6.7 करोड़ elements) से अधिक होने पर ValueError देते हैं।

उपयोग की विस्तृत guide

• math_metrology family guide

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• numerics_tour — py -3.11 examples/numerics_tour.py

वे अगले ops जिनसे type जुड़ता है (table को input के रूप में लेते हैं)

dynsys_poincare_section · dwt_inverse · chebyshev_eval_nd

इसी category के (numerics)

erf · erfc · bessel · gauss_quadrature · gauss_cubature · chebyshev_coeffs_nd · chebyshev_eval_nd · low_discrepancy


*Provenance: mathnumerics.py — MATH operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.