dynsys_lyapunov_spectrum — MATH dynsys op

• Data kinds: कोई नहीं → signal (केवल arguments से तय होने वाला op — यह कोई image या data input नहीं लेता)

• Call: import fullseye as fs; fs.ledger.dynsys_lyapunov_spectrum(system='lorenz', params=None, x0=None, t_end=200.0, dt=0.005, burn_in=20.0) (implementation को सीधे call करना हो तो import mathops; mathops.dynsys_lyapunov_spectrum(system='lorenz', params=None, x0=None, t_end=200.0, dt=0.005, burn_in=20.0), registry से लेना हो तो opsmath.get("dynsys_lyapunov_spectrum"))

उपयोग

tangent flow + QR से Lyapunov spectrum — और वह योग जिसे आप जाँच सकते हैं।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

Integrates the state together with an orthonormal frame of tangent vectors (the variational equation dY/dt = J(x) Y), re-orthonormalising by QR at every step and accumulating log of the diagonal. The exponents come out ordered, largest first.

★★Why this earns its place — the trace identity. The sum of the exponents equals the time-average of the divergence of the field:

sum(lambda_i) == <div f>

For Lorenz the divergence is the constant -(sigma + 1 + beta), so the sum is known in closed form: -13.6667 for the classical parameters. That is an exact target the attractor picture cannot provide. The published largest exponent (≈ 0.906 for sigma=10, beta=8/3, rho=28) is a second, independent check.

Returns a signal: the exponents, descending.

Raises ValueError: unknown system; non-finite input; burn_in not shorter than t_end; a trajectory that left float range.

Limits: the exponents converge like 1/sqrt(T) — a short window gives a plausible but wrong spectrum. The trace identity converges much faster and is the honest gate; the individual exponents need long windows.

HALCON: no operator.

पूरी 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 करते हैं)

• poc_what_a_picture_cannot_check — py -3.11 examples/poc_what_a_picture_cannot_check.py

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

mat_solve · mat_lstsq · stat_describe · stat_histogram · stat_zscore · interp_linear · interp_cubic · interp_scattered

इसी category के (dynsys)

ode_flow_states · ode_vector_field_grid · dynsys_poincare_section · dynsys_bifurcation_map · dynsys_correlation_dimension


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

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