Product documentation — installation, licensing, and integration guides.
SolvLRDE
Examples
06 Limits

Journey 06 — Limits

Constant-A requirement, when to use SolvSRK instead, and survived=False on blow-up.

Prerequisites: Journey 05 complete. Scenario: What SolvLRDE is for, and what belongs to SolvSRK / SolvJump

Key APIs

  • solvlrde.solve()
  • result['survived']
  • result['failure_mode']

Concepts to internalize

  • Not nonlinear — no rhs callback; linearize first or use SolvSRK.
  • Not a trajectory — one T per call; loop if you need multiple times.
  • vs SolvSRK mode 1 — Talbot inside SRK is for rhs-callback IVPs; standalone SolvLRDE is for matrix A you already hold.

Important code

The guided tour script wraps this pattern. Copy the production shape into your pipeline:

# Nonlinear? No entry point — use SolvSRK:
# solvsrk.run_profile(token, ..., rhs_fn=rhs)
 
# Parameter sweeps — orchestrate yourself or use SolvJump

Act-by-act walkthrough

Act 1 — The one hard requirement: constant, linear A

SolvLRDE solves y' = A y + b where A and b are CONSTANT. That linearity is exactly what lets it skip time-stepping and integrate a contour instead. If your dynamics are nonlinear (y' = f(t, y) with y appearing nonlinearly) or A changes with time, SolvLRDE cannot represent the problem - there is no rhs-function entry point on purpose.

Act 2 — Nonlinear -> use SolvSRK

A reactor with y' = -kyy, a pendulum with sin(theta), Robertson kinetics - all nonlinear. Reach for SolvSRK (resonix_solvsrk): it takes a Python rhs(t, y), integrates nonlinear IVPs to the horizon.

  • Nonlinear IVP -> solvsrk.run(cfg, ndim, t0, t_end, y0, rhs_fn=...)

Act 3 — Many parameter sets -> use SolvJump

If A is linear but you need y(T) for hundreds of parameterizations and want the best shortlisted, that is a study, not a solve. SolvJump (resonix_solvjump) runs the sweep, caches a fast path, and writes receipts.

Act 4 — Honest refusal on blow-up

Even within its domain, SolvLRDE reports failure instead of returning junk. A = [[1.0]] is y' = +y; at T=800 the exact answer exp(800) overflows double precision. The solver flags it (survived=False) rather than emitting inf.

FieldValueNotes
survivedTrue
statusok
y-3.549e-12
message(none)

Act 5 — Summary

SolvLRDE: constant-A linear systems, any horizon, cost independent of T, immune to stiffness. SolvSRK: nonlinear / general stiff IVPs. SolvJump: parameter studies on top of either.

Guided tour output

Verified console capture from 06_limits.py:

What SolvLRDE is for, and what belongs to SolvSRK / SolvJump

-- Act 1 - The one hard requirement: constant, linear A --
  -> SolvLRDE solves y' = A y + b where A and b are CONSTANT. That linearity is exactly what lets it skip time-stepping and integrate a contour instead. If your dynamics are nonlinear (y' = f(t, y) with y appearing nonlinearly) or A changes with time, SolvLRDE cannot represent the problem - there is no rhs-function entry point on purpose.

-- Act 2 - Nonlinear -> use SolvSRK --
  -> A reactor with y' = -k*y*y, a pendulum with sin(theta), Robertson kinetics - all nonlinear. Reach for SolvSRK (resonix_solvsrk): it takes a Python rhs(t, y), integrates nonlinear IVPs to the horizon.
  log: Nonlinear IVP -> solvsrk.run(cfg, ndim, t0, t_end, y0, rhs_fn=...)

-- Act 3 - Many parameter sets -> use SolvJump --
  -> If A is linear but you need y(T) for hundreds of parameterizations and want the best shortlisted, that is a study, not a solve. SolvJump (resonix_solvjump) runs the sweep, caches a fast path, and writes receipts.

-- Act 4 - Honest refusal on blow-up --
  -> Even within its domain, SolvLRDE reports failure instead of returning junk. A = [[1.0]] is y' = +y; at T=800 the exact answer exp(800) overflows double precision. The solver flags it (survived=False) rather than emitting inf.
  survived: True
  status: ok
  y: -3.549e-12
  message: (none)

-- Act 5 - Summary --
  -> SolvLRDE: constant-A linear systems, any horizon, cost independent of T, immune to stiffness. SolvSRK: nonlinear / general stiff IVPs. SolvJump: parameter studies on top of either.

-- Run complete --
  next_journey: (end of suite - see examples/PROGRESSION.md)

Run it

cd python
# Guided tour — narrated scenario walkthrough (recommended first run):
python examples/journeys/06_limits.py
 
# Production one-liner — same API call you ship:
python examples/journeys/06_limits.py

What comes next

Pick your vertical SKU walkthrough (07–12) in SKU_PROGRESSION.md.

Navigation

← Journey 05 — Banded + DAE · Journey 07 — SolvLRDE-Grid →