Package Exports
- runge-kutta
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (runge-kutta) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
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 - ruben.giannotti@gmx.net - github.com/giannotr