ode23 — Solve nonstiff ODE systems using adaptive Bogacki-Shampine 3(2) integration.
ode23 integrates nonstiff first-order ODE systems with adaptive low-order Runge-Kutta stepping and returns MATLAB-compatible time/state output arrays.
Syntax
y = ode23(odefun, tspan, y0)
y = ode23(odefun, tspan, y0, options)
[t, y] = ode23(odefun, tspan, y0)
[t, y] = ode23(odefun, tspan, y0, options)Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
odefun | Any | Yes | — | ODE right-hand-side callback f(t,y). |
tspan | Any | Yes | — | Time interval or monotonic time vector. |
y0 | Any | Yes | — | Initial state vector/value. |
options | Any | No | — | Optional struct with tolerances and step controls. |
Returns
| Name | Type | Description |
|---|---|---|
y | NumericArray | Solution states evaluated over tspan. |
t | NumericArray | Time points selected by solver. |
y | NumericArray | Solution states at each returned time point. |
Returned values from ode23 depend on how many outputs the caller requests.
Errors
| Identifier | When | Message |
|---|---|---|
RunMat:ode23:InvalidArgument | Input argument count/options struct grammar is invalid. | ode23: invalid argument |
RunMat:ode23:InvalidInput | ODE input/state/callback semantics are invalid for integration. | ode23: invalid input |
RunMat:ode23:Internal | Internal output materialization fails. | ode23: internal runtime failure |
How ode23 works
- Supports scalar, vector, and matrix-valued initial conditions.
- Accepts options as a struct, including
RelTol,AbsTol,InitialStep, andMaxStep. - When
tspanhas more than two points, the solver returns values at each requested time. - With one output, returns only the
ytrajectory matrix.
Example
Integrate a scalar ODE at requested output times
[t, y] = ode23(@(t, y) -2*y, [0 0.25 0.5 1.0], 1)Expected output:
size(t) = [4, 1], size(y) = [4, 1]Using ode23 with coding agents
Open a RunMat example with live inputs, then ask the agent to explain how ode23 changes the result.
Run a small ode23 example, explain the result, then change one input and compare the output.
Related Math functions
Elementwise
abs · angle · complex · conj · double · exp · expm1 · factorial · gamma · heaviside · hypot · imag · ldivide · log · log10 · log1p · log2 · minus · nextpow2 · plus · pow2 · power · rdivide · real · sign · single · sqrt · times
Trigonometry
acos · acosh · asin · asinh · atan · atan2 · atanh · cos · cosd · cosh · deg2rad · rad2deg · sin · sind · sinh · tan · tand · tanh
Reduction
all · any · cummax · cummin · cumprod · cumsum · cumtrapz · diff · gradient · max · mean · median · min · nnz · prod · std · sum · trapz · var
Structure
Open-source implementation
Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how ode23 is executed, line by line, in Rust.
- View the source for ode23 in Rust on GitHub
- Learn how the RunMat runtime works
- Found a bug? Open an issue with a minimal reproduction.
About RunMat
RunMat is an open-source runtime that executes MATLAB-syntax code blazing on any GPU. It is licensed under the Apache 2.0 license.
- RunMat automatically optimizes your math for GPU execution on Apple, Nvidia, and AMD hardware. No code changes needed. Simulations that took hours now take minutes.
- Start running code in seconds. RunMat runs in the browser, on the desktop, or from the CLI. No license server, no IT ticket.