Function solveODE #
Numerical Integration of Ordinary Differential Equations
Two variable step methods are provided:
- “RK23”: Bogacki–Shampine method
- “RK45”: Dormand-Prince method RK5(4)7M (default)
The arguments are expected as follows.
func
should be the forcing functionf(t, y)
tspan
should be a vector of two numbers or units[tStart, tEnd]
y0
the initial state values, should be a scalar or a flat arrayoptions
should be an object with the following information:method
(‘RK45’): [‘RK23’, ‘RK45’]tol
(1e-3): Numeric tolerance of the method, the solver keeps the error estimates less than this valuefirstStep
: Initial step sizeminStep
: minimum step size of the methodmaxStep
: maximum step size of the methodminDelta
(0.2): minimum ratio of change for the stepmaxDelta
(5): maximum ratio of change for the stepmaxIter
(1e4): maximum number of iterations
The returned value is an object with {t, y}
please note that even though t
means time, it can represent any other independant variable like x
:
t
an array of size[n]
y
the states array can be in two ways- if
y0
is a scalar: returns an array-like of size[n]
- if
y0
is a flat array-like of size [m]: returns an array like of size[n, m]
- if
Syntax #
math.solveODE(func, tspan, y0)
math.solveODE(func, tspan, y0, options)
Parameters #
Parameter | Type | Description |
---|---|---|
func |
function | The forcing function f(t,y) |
tspan |
Array | Matrix | The time span |
y0 |
number | BigNumber | Unit | Array | Matrix | The initial value |
options |
Object | Optional configuration options |
Returns #
Type | Description |
---|---|
Object | Return an object with t and y values as arrays |
Throws #
Type | Description —- | ———–
Examples #
function func(t, y) {return y}
const tspan = [0, 4]
const y0 = 1
math.solveODE(func, tspan, y0)
math.solveODE(func, tspan, [1, 2])
math.solveODE(func, tspan, y0, { method:"RK23", maxStep:0.1 })