Skip to main content

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)

Source distribution for odeanalysis 0.1.0
File Size Uploaded
odeanalysis-0.1.0.tar.gz 166.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for odeanalysis 0.1.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page