JSPM

runge-kutta

0.0.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 18
  • Score
    100M100P100Q69164F
  • License MIT

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

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)

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

  • nsolvejs - Solve equations numerically and regression analysis

Maintainer