RunMat
GitHub

ode45 — Solve nonstiff ODE systems using adaptive Dormand-Prince 5(4) integration.

ode45 integrates nonstiff first-order ODE systems over tspan using adaptive RK45 stepping and returns MATLAB-compatible time/state outputs.

Syntax

y = ode45(odefun, tspan, y0)
y = ode45(odefun, tspan, y0, options)
[t, y] = ode45(odefun, tspan, y0)
[t, y] = ode45(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 ode45 depend on how many outputs the caller requests.

Errors

IdentifierWhenMessage
RunMat:ode45:InvalidArgumentInput argument count/options struct grammar is invalid.ode45: invalid argument
RunMat:ode45:InvalidInputODE input/state/callback semantics are invalid for integration.ode45: invalid input
RunMat:ode45:InternalInternal output materialization fails.ode45: internal runtime failure

How ode45 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 exponential decay

[t, y] = ode45(@(t, y) -y, [0 5], 1)

Expected output:

y(end) ≈ exp(-5)

Using ode45 with coding agents

Open a RunMat example with live inputs, then ask the agent to explain how ode45 changes the result.

Run a small ode45 example, explain the result, then change one input and compare the output.

Elementwise

abs · angle · complex · conj · double · exp · expm1 · factorial · gamma · 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

Signal

blackman · butter · conv · conv2 · deconv · filter · hamming · hann · sawtooth · sinc · square

Rounding

ceil · fix · floor · mod · rem · round

Factor

chol · eig · lu · qr · svd

Solve

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

Fft

fft · fft2 · fftshift · ifft · ifft2 · ifftshift

Interpolation

interp1 · interp2 · pchip · ppval · spline

Open-source implementation

Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how ode45 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.