Skip to main content

A simple package to perform numerical integration easily

Project description

Phyber NumInt

A numerical integrator for solving ODE systems

A simple package to solving ODE with different algorithms, written as explicitly as possible. I created this for a University course.

To use it you simply create an instance of the class ODEIntegrator

It takes the following parameters

  • F that's the function that represents the ODE system (X' = F(X))
  • X0 that's the initial conditions
  • ti the initial time
  • tf the final time
  • dt the time step

The function F should be structured in the following fashion

def lorenz_system(t, X, sigma, beta, rho):
    '''
        x' = sigma(y - x)
        y' = x(rho - z) - y
        z' = x*y - beta*z
    '''
    x, y, z = X
    dxdt = sigma * (y - x)
    dydt = x * (rho - z) - y
    dzdt = x * y - beta * z
    return (dxdt, dydt, dzdt)

Then, the method solve of ODEIntegrator can be called with the method argument. The method argument is an enum member of IntegrationMethods. The following exist

  • EULER_FORWARD
  • EULER_BACKWARD
  • EULER_IMPROVED
  • EULER_IMPROVED
  • RUNGE_KUTTA_2
  • RUNGE_KUTTA_3
  • RUNGE_KUTTA_4
  • RUNGE_KUTTA_FEHLBERG_45

For example, ode_integrator.solve(IntegrationMethod.EULER_FORWARD)

One implementation would be

from phyber_numint import ODEIntegrator, IntegrationMethod
from phyber_numint.examples import lorenz_system

integ = ODEIntegrator(lorenz_system, (0., .5, .5), 0, 50, 1e-3, F_args=(8/3, 10, 25))
integ.solve(IntegrationMethod.RUNGE_KUTTA_4)
integ.show(True, plt_show=True)
integ.show((0,1), 'phase', plt_show=True, plt_kwargs={'s': 2})

Examples in the file examples.py

Also install matplotlib and tqdm to take advantage of every feature

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

phyber_numint-0.1.2.tar.gz (6.5 kB view hashes)

Uploaded Source

Built Distribution

phyber_numint-0.1.2-py3-none-any.whl (8.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page