RunMat
GitHub

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

NameTypeRequiredDefaultDescription
odefunAnyYesODE right-hand-side callback f(t,y).
tspanAnyYesTime interval or monotonic time vector.
y0AnyYesInitial state vector/value.
optionsAnyNoOptional struct with tolerances and step controls.

Returns

NameTypeDescription
yNumericArraySolution states evaluated over tspan.
tNumericArrayTime points selected by solver.
yNumericArraySolution states at each returned time point.

Returned values from ode23 depend on how many outputs the caller requests.

Errors

IdentifierWhenMessage
RunMat:ode23:InvalidArgumentInput argument count/options struct grammar is invalid.ode23: invalid argument
RunMat:ode23:InvalidInputODE input/state/callback semantics are invalid for integration.ode23: invalid input
RunMat:ode23:InternalInternal 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, and MaxStep.
  • When tspan has more than two points, the solver returns values at each requested time.
  • With one output, returns only the y trajectory 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.

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

Rounding

ceil · fix · floor · mod · rem · round

Factor

chol · eig · lu · qr · svd

Solve

cond · det · inv · linsolve · norm · null · pinv · rank · rcond · rref

Fft

fft · fft2 · fftshift · ifft · ifft2 · ifftshift

Interpolation

interp1 · interp2 · pchip · ppval · spline

Symbolic

limit · sym · syms

Open-source implementation

Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how ode23 is executed, line by line, in Rust.

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.

Getting started · Benchmarks · Pricing

Download RunMat

Download RunMat for full performance, or use RunMat in your browser for zero setup.