odeanalysis
odeanalysis is a SymPy-based package for exact symbolic, formal, structural,
and certified analysis of scalar linear ODEs and first-order linear
differential systems. It is designed for structural questions—singularities,
Frobenius/Levelt data, Newton and Levelt--Turrittin structure, Stokes geometry,
turning points, parameter transitions, exact continuation in selected families,
and rigorously enclosed numerical transport—not as a generic nonlinear ODE
solver.
The package distinguishes exact, certified-formal, certified-semialgebraic,
certified-numerical, structural, and incomplete results. See the
certification model before interpreting a
complete, certified, or structural_only field.
Choose a workflow
| Starting point | First guide | Typical public entry points |
|---|---|---|
| Scalar equation/operator | Scalar workflow | analyze_ode_singularities, frobenius_analysis, differential_newton_polygon |
Y' = A(x)Y+b(x) |
System workflow | analyze_system_singularity, formal_system_analysis, system_stokes_geometry |
| Symbolic parameters | Parameter workflow | local_parameter_analysis, system_formal_type_stratification, parameterized_turning_analysis |
| Rigorous numerical transport | Certified continuation | certified_system_continuation |
The documentation index gives the complete map.
Capability overview
| Capability | Scalar | Systems | Parameters | Evidence |
|---|---|---|---|---|
| Local singularity classification | Yes | Yes | Yes | Exact where valuations decide |
| Frobenius / residue-Levelt structure | Yes | Yes | Yes | Exact / bounded formal |
| Irregular formal analysis | Yes | Yes | Yes | Exact formal within stated bounds |
| Ramification and exponential parts | Yes | Yes | Yes | Verified formal reduction |
| Structural Stokes geometry | Yes | Yes | Yes | Structural, not generic analytic constants |
| Turning points / uniform WKB | Yes | Via scalarization/model-specific paths | Yes | Exact local structure + formal models |
| Scalar ↔ system interoperability | Companion form | Cyclic scalarization | Bounded by cyclicity proof | Exact transformation replay |
| Canonical recognition | Selected families | Via scalarization where applicable | Partial | Exact pullback verification |
| Exact continuation | Selected canonical families | Selected inherited cases | Partial | Exact formulas |
| Certified numerical continuation | — | Constant homogeneous systems | — | Arb complex-ball enclosure |
| Generic analytic Stokes matrices | No | No | No | Requires stronger global analytic certification |
| Nonlinear ODEs | No | No | No | Outside scope |
The theorem-level boundary is in capabilities and limitations.
Installation
python -m pip install odeanalysis
Python 3.11+ is required. Core dependencies are SymPy, funcprops, and
semialg. Rigorous ball continuation uses:
python -m pip install "odeanalysis[certified]"
Scalar quick start
import sympy as sp
from odeanalysis import analyze_ode_singularities, frobenius_analysis
x = sp.symbols("x")
y = sp.Function("y")
ode = x**2*sp.diff(y(x), x, 2) + x*sp.diff(y(x), x) + (x**2-1)*y(x)
singularities = analyze_ode_singularities(ode, y, x)
frobenius = frobenius_analysis(ode, y, x, point=0, terms=6)
Continue with local analysis, Fuchsian analysis, Newton invariants, formal asymptotics, turning points, canonical equations, and analytic continuation.
System quick start
import sympy as sp
from odeanalysis import FirstOrderSystem, analyze_system_singularity, formal_system_analysis, system_stokes_geometry
x = sp.symbols("x")
system = FirstOrderSystem(x, sp.ImmutableMatrix.diag(x**-2, -x**-2))
local = analyze_system_singularity(system, 0)
formal = formal_system_analysis(system, 0, adaptive=True)
stokes = system_stokes_geometry(formal)
assert formal.certificate.verified
The system guides are singularities, formal reduction, Stokes geometry, and parameter stratification. The overview remains in systems and the deeper reducer reference is Levelt--Turrittin.
Parameter quick start
from odeanalysis import system_formal_type_stratification
a = sp.symbols("a", real=True)
family = FirstOrderSystem(x, sp.ImmutableMatrix.diag(a/x, -a/x))
strata = system_formal_type_stratification(family, (a,), max_resonance_order=2)
A formal-type stratum certifies a discrete bounded signature: singularity kind, leading rank, spectral multiplicity pattern, resonance orders within the configured bound, ramification, block dimensions, exponential-block data, and structural Stokes combinatorics. Continuously varying exponent values are not claimed to be constant merely because a cell is open.
Certified numerical continuation
from odeanalysis import certified_system_continuation
constant = FirstOrderSystem(x, sp.ImmutableMatrix([[0, 1], [0, 0]]))
transport = certified_system_continuation(constant, 0, 2, precision_bits=192)
The current certified backend is deliberately narrow: for constant homogeneous
systems it encloses exp((b-a)A) with Arb complex balls. Variable-coefficient
validated integration is refused rather than replaced by tolerance-only
floating-point integration. See certified continuation.
Examples, verification, and boundaries
Start with the example gallery and worked failures. The older compact examples reference is retained for API-oriented snippets.
For evidence semantics and conventions see verification, mathematical conventions, API classification, public API index, architecture, and traceability. Dominance documents sector ordering, and the user guide remains a broad reference.
License
GPL-3.0-only. See LICENSE.
Metadata
Release files for odeanalysis 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| odeanalysis-0.1.0.tar.gz | 166.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| odeanalysis-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 318.0 kB
Release files / odeanalysis-0.1.0.tar.gz
| Download URL | odeanalysis-0.1.0.tar.gz |
|---|---|
| Size | 166.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
74da55b14e2a0f109da89c56cee5bc4cf983ab77e5175da08ba4f326412095bd
|
|
BLAKE2b-256 checksum How to use checksums |
49150579e11635e22eb7d2ed647cdb76fd66d7496af688dd1e797b70dcef991e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logRelease files / odeanalysis-0.1.0-py3-none-any.whl
| Download URL | odeanalysis-0.1.0-py3-none-any.whl |
|---|---|
| Size | 151.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ec57281d7a93c275f783e4424150d8f985824ee476e1452253eca23c8f6cdb31
|
|
BLAKE2b-256 checksum How to use checksums |
c9f2b1bf66491e3aeaba820c9fda8e3ad7c22764ec98ac4da344b9172b4d3698
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency log