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 details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 3

File details

Details for the file phyber_numint-0.1.2.tar.gz.

File metadata

  • Download URL: phyber_numint-0.1.2.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.17

File hashes

Hashes for phyber_numint-0.1.2.tar.gz
Algorithm Hash digest
SHA256 ffdef45b81b6d5452ec12c85b4e92938e982b0169413810068ef3f3253b6068e
MD5 bc05bee2bc0a5c36d631b73b07628ebc
BLAKE2b-256 8eeafc25deefeeee883cfa503314e160c59e71d898f64b5d20fd076937a0611a

See more details on using hashes here.

File details

Details for the file phyber_numint-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: phyber_numint-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 8.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.17

File hashes

Hashes for phyber_numint-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 951fe56ba4efd7920fa75e956b4e5ca51646b376d93ac952f0dd535ad380c71b
MD5 1d61d9c86b763ea520614b4bedcda909
BLAKE2b-256 bdfa64ceb5fb09bfd933409ff7920b3bae0e5ea15ee797b426db5d3cd0f1b842

See more details on using hashes here.

Supported by

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