Socket
Book a DemoInstallSign in
Socket

ode-rk4

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ode-rk4

Integrate a system of ODEs using the Fourth Order Runge-Kutta (RK-4) method

latest
Source
npmnpm
Version
1.1.3
Version published
Maintainers
1
Created
Source

ode-rk4 Build Status npm version Dependency Status

Integrate a system of ODEs using the Fourth Order Runge-Kutta (RK-4) method

Introduction

This module integrates a system of ordinary differential equations of the form

\begin{eqnarray*} y'(t) &=& f(t, y(t)), \\ y(t_0) &=& y_0 \end{eqnarray*}

where y is a vector of length n. Given time step \Delta t, the Runge-Kutta 4 method integrates the ODE with update

\begin{eqnarray*} y_{n+1} &=& \frac{\Delta t}{6}\left(k_1 + 2k_2 + 2k_3 + k_4\right) \\ t_{n+1} &=& t_n + \Delta t \end{eqnarray*}

where k_n are given by

\begin{eqnarray*} k_1 &=& f(t_n, y_n), \\ k_2 &=& f(t_n + \frac{\Delta t}{2}, y_n + \frac{\Delta t}{2} k_1), \\ k_3 &=& f(t_n + \frac{\Delta t}{2}, y_n + \frac{\Delta t}{2} k_2), \\ k_4 &=& f(t_n + \Delta t, y_n + \Delta tk_3).  \end{eqnarray*}

For a similar adaptive method using the fifth order Cash-Karp Runge-Kutta method with fourth order embedded error estimator, see [https://github.com/scijs/ode45-cash-karp](ode45-cash-karp].

Install

$ npm install ode-rk4

Example

var rk4 = require('ode-rk4')

var deriv = function(dydt, y, t) {
  dydt[0] = -y[1]
  dydt[1] =  y[0]
}

var y0 = [1,0]
var n = 1000
var t0 = 0
var dt = 2.0 * Math.PI / n

var integrator = rk4( y0, deriv, t0, dt )

// Integrate 1000 steps:
integrator.steps(n)

// Integrate all the way around a circle:
// => integrator.y = [ 0.9999999999995743, -8.160481752145232e-11 ]

API

require('ode-rk4')( y0, deriv, t0, dt )

Arguments:

  • y0: an array or typed array containing initial conditions. This vector is updated in-place with each integrator step.
  • deriv: a function that calculates the derivative. Format is function( dydt, y, t ). Inputs are current state y and current time t, output is the calculated derivative dydt.
  • t0: initial time t.
  • dt: time step \Delta t.

Returns: Initialized integrator object.

Properties:

  • n: dimension of y0.
  • y: current state. Initialized as a shallow copy of input y0.
  • deriv: function that calculates the derivative. Initialized from input. May be changed.
  • t: current time, incremented by dt with each time step.
  • dt: time step \Delta t. Initialized from input dt. May be changed.

Methods:

  • .step(): takes a single step of the RK-4 integrator and stores the result in-place in the y property.
  • .steps( n ): takes n steps of the RK-4 integrator, storing the result in-place in the y property.

Credits

(c) 2015 Ricky Reusser. MIT License

Keywords

scijs

FAQs

Package last updated on 10 Aug 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts