runge-kutta
v0.0.1
Published
JavaScript implementation of the classic Runge-Kutta method (RK4)
Downloads
67
Maintainers
Readme
RungeKuttaJS
JavaScript implementation of the classic Runge-Kutta method (RK4)
Key notes / highlights
- Solves ordinary diffenrential equations numerically
- Less error prone than a Euler integration
- Works with single equations and systems of equations
- Minimal implementation
Install
$ npm install runge-kutta
Usage
Suppose you want to predict the spread of a viral disease. The SIR model could be implemented and solved with the following four lines of code.
import rungeKutta from 'runge-kutta';
// Setup parameters for the transmission speed (T)
// and the recovery rate R (R).
// This corresponds to a basic reproduction number equal to 3
// ~ T/R.
const T = .2143, R = 1/14;
// Define the set of ordinary differential equations.
const dSIR = (t, y) => [-T * y[0] * y[1], (T * y[0] - R) * y[1], R * y[1]];
// Solve the system and log the result (reduced to the infection count).
console.log(rungeKutta(dSIR, [1, .1, 0], [0, 14], .2).map(x => x[1]));
API
Methods
rungeKutta
► rungeKutta(ODE
: initialValueFunction, initialCondition
: number | number[], range
: readonly [number, number], stepSize
= 1): number[] | number[][]
Solves the the initial value problem given through ODE
. It is specified through a function taking in a number for the undependent variable and a number or an array of numbers for the dependent variable(s):
type initialValueFunction = (x: number, y: any) => any;
type initialValueFunctionSingle = (x: number, y: number) => number;
type initialValueFunctionMulti = (x: number, y: readonly number[]) => number[];
If the initialCondition
is a number (or an array containg one number) the rungeKutta
assumes a single variable problem, otherwise a multi variable problem.
Example (Single variable problem: y' = y, y(0) = 1)
const dy = (t, y) => y;
const approxExp = rungeKutta(dy, 1, [0, 8], .1);
console.log(approxExp);
A multi variable problem is given in the introduction.
Keywords
- math
- mathematics
- numerical
- numeric
- methods
- solve
- differential
- equation
- system
- equations
- calculus
Dependencies
Related
- nsolvejs - Solve equations numerically and regression analysis
Maintainer
- Ruben Giannotti - [email protected] - github.com/giannotr