.. image:: https://img.shields.io/pypi/v/numbakit-ode.svg :target: https://pypi.python.org/pypi/numbakit-ode :alt: Latest Version
.. image:: https://img.shields.io/pypi/l/numbakit-ode.svg :target: https://pypi.python.org/pypi/numbakit-ode :alt: License
.. image:: https://img.shields.io/pypi/pyversions/numbakit-ode.svg :target: https://pypi.python.org/pypi/numbakit-ode :alt: Python Versions
.. image:: https://github.com/hgrecco/numbakit-ode/workflows/CI/badge.svg?branch=main :target: https://github.com/hgrecco/numbakit-ode/actions?query=workflow%3ACI
.. image:: https://github.com/hgrecco/numbakit-ode/workflows/Lint/badge.svg?branch=main :target: https://github.com/hgrecco/numbakit-ode/actions?query=workflow%3ALint
.. image:: https://coveralls.io/repos/github/hgrecco/numbakit-ode/badge.svg?branch=main :target: https://coveralls.io/github/hgrecco/numbakit-ode?branch=main
.. image:: https://readthedocs.org/projects/numbakit-ode/badge/ :target: http://numbakit-ode.readthedocs.org/ :alt: Docs
numbakit-ode (nbkode) is a Python package to solve ordinary differential equations (ODE) that uses Numba_ to compile code and therefore speed up calculations.
The API is very similar to scipy's integrate module therefore allowing for easy migration.
It runs in Python 3.7+ depending on NumPy, SciPy and Numba_. It is licensed under BSD.
It is extremely easy and natural to use:
.. code-block:: python
>>> import nbkode
>>> def func(t, y):
... return -0.1 * y
>>> t0 = 0.
>>> y0 = 1.
>>> solver = nbkode.ForwardEuler(func, t0, y0)
>>> ts, ys = solver.run([0., 5., 10.])
You can get a list of all solvers:
.. code-block:: python
>>> import nbkode
>>> nbkode.get_solvers() #doctest: +SKIP
or filter by characteristics or group name (or names).
.. code-block:: python
>>> nbkode.get_solvers(implicit=False, fixed_step=True) #doctest: +SKIP
>>> nbkode.get_solvers('euler', 'adam-bashforth') #doctest: +SKIP
To install numbakit-ode, simply (soon):
.. code-block:: bash
$ pip install numbakit-ode
or utilizing conda, with the conda-forge channel (soon):
.. code-block:: bash
$ conda install -c conda-forge numbakit-ode
and then simply enjoy it!
Fast: We love Numba_. It allows you to write clean Python code that translates to optimized machine code at runtime. We aim to be able to leverage this power to solve a system of ordinary differential equations.
Simple but useful API: Solvers are classes easy to instantiate, with sensible defaults and convenient methods.
Correctness: We check against established libraries like SciPy_ that our implementation match those of established libraries using automated testing.
Data driven development: We take decisions based on data, and for this purpose we measure the performance of each part of the package, and the effect of each change we make.
numbakit-ode is maintained by a community. See AUTHORS_ for a complete list.
To review an ordered list of notable changes for each version of a project, see CHANGES_
.. NumPy
: http://www.numpy.org/
.. SciPy
: http://www.scipy.org/
.. Numba
: https://numba.pydata.org/
.. pytest
: https://docs.pytest.org/
.. airspeed velocity
: https://asv.readthedocs.io
.. AUTHORS
: https://github.com/hgrecco/numbakit-ode/blob/master/AUTHORS
.. _CHANGES
: https://github.com/hgrecco/numbakit-ode/blob/master/CHANGES