0.0.1 • Published 4 years ago

runge-kutta v0.0.1

Weekly downloads
15
License
MIT
Repository
github
Last release
4 years ago

RungeKuttaJS

JavaScript implementation of the classic Runge-Kutta method (RK4)

npm build coverage Known Vulnerabilities dependencies size types unicorn xo license

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