ode_flow_states — MATH dynsys op

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

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

उपयोग

नाम वाले vector field को integrate करता है — trajectory, उतने order के साथ जितना आपने चुकाया।

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

Explicit Runge-Kutta on one of the named systems (lorenz, rossler, harmonic, linear). method="rk4" is the classical 4th-order step; method="euler" is there as a control group — the same picture comes out of both, and only the error tells them apart.

★Why the field is a name, not a function: the typed ledger registers inputs by sort and the chain fuzzer builds arguments from data, so a callable can never be reached from there. A name (or, for linear, the matrix itself in params) keeps every op in this family reachable from the ledger.

★Why this earns its place: for system="linear" the exact solution is expm(A t) x0, so the error is known in closed form — and halving dt divides it by 16, which is what "4th order" means. A drawing of an attractor cannot be checked; this can.

Parameters

system : str

One of DYNSYS_SYSTEMS.

params : floats or None

System parameters (defaults in DYNSYS_SYSTEMS). For linear this is

the matrix A in row-major order (n*n numbers).

x0 : floats or None

Initial state (default: a point on the attractor / unit first coordinate).

t_end, dt : float

Integration window and step. t_end / dt must stay under 4,000,000.

method : "rk4" | "euler"

Returns a states table: t (S,) and x (S, n).

Raises ValueError: unknown system or method; wrong parameter count; non-finite input; dt not positive; a step count over the cap; a trajectory that left float range (the field diverged — reported, never silently clipped).

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 जुड़ता है (table को input के रूप में लेते हैं)

dynsys_poincare_section · dwt_inverse · chebyshev_eval_nd

इसी category के (dynsys)

ode_vector_field_grid · dynsys_poincare_section · dynsys_lyapunov_spectrum · 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.