Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/microno95/desolver
A Python library for solving Initial Value Problems using various numerical integration methods.
https://github.com/microno95/desolver
initial-value-problem numerical-integrators numerical-methods numpy ode ordinary-differential-equations python pytorch
Last synced: about 2 months ago
JSON representation
A Python library for solving Initial Value Problems using various numerical integration methods.
- Host: GitHub
- URL: https://github.com/microno95/desolver
- Owner: Microno95
- License: other
- Created: 2016-01-31T21:25:11.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2021-12-25T02:20:03.000Z (almost 3 years ago)
- Last Synced: 2024-10-31T19:37:04.505Z (about 2 months ago)
- Topics: initial-value-problem, numerical-integrators, numerical-methods, numpy, ode, ordinary-differential-equations, python, pytorch
- Language: Python
- Homepage:
- Size: 4.73 MB
- Stars: 18
- Watchers: 4
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
DESolver
========.. image:: https://github.com/Microno95/desolver/actions/workflows/pytest-ubuntu.yml/badge.svg
:target: https://github.com/Microno95/desolver/actions/workflows/pytest-ubuntu.yml
:alt: Build Status.. image:: https://readthedocs.org/projects/desolver/badge/?version=latest
:target: https://desolver.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status.. image:: https://codecov.io/gh/Microno95/desolver/branch/master/graph/badge.svg
:target: https://codecov.io/gh/Microno95/desolver
:alt: codecov.. image:: https://bettercodehub.com/edge/badge/Microno95/desolver?branch=master
:target: https://bettercodehub.com/
:alt: BCH complianceThis is a python package for solving Initial Value Problems using various numerical integrators.
Many integration routines are included ranging from fixed step to symplectic to adaptive integrators.Documentation
=============Documentation is now available at `desolver docs `_! This will be updated with new examples as they are written, currently the examples show the use of ``pyaudi``.
Latest Release
==============**4.2.0** - Improved performance of implicit methods, added embedded implicit methods following Kroulíková (2017) for fully implicit adaptive integration.
**4.1.0** - Initial release of implicit integration schemes that use a basic newton-raphson algorithm to solve for the intermediate states.
**3.0.0** - PyAudi support has been finalised. It is now possible to do numerical integrations using ``gdual`` variables such as ``gdual_double``\ , ``gdual_vdouble`` and ``gdual_real128`` (only on select platforms, refer to `pyaudi docs `_ for more information). Install desolver with pyaudi support using ``pip install desolver[pyaudi]``. Documentation has also been added and is available at `desolver docs `_.
**2.5.0** - Event detection has been added to the module. It is now possible to do numerical integration with terminal and non-terminal events.
**2.2.0** - PyTorch backend is now implemented. It is now possible to numerically integrate a system of equations that use pytorch tensors and then compute gradients from these.
Use of PyTorch backend requires installation of PyTorch from `here `_.
To Install:
===========Just type
``pip install desolver``
Implemented Integration Methods
-------------------------------Explicit Methods
~~~~~~~~~~~~~~~~Adaptive Methods
^^^^^^^^^^^^^^^^#. Runge-Kutta 14(12) (Feagin, 2009)
#. Runge-Kutta 10(8) (Feagin, 2009)
#. Runge-Kutta 8(7) (Dormand & Prince, 1980)
#. Runge-Kutta 4(5) with Cash-Karp Coefficients
#. Adaptive Heun-Euler MethodFixed Step Methods
^^^^^^^^^^^^^^^^^^#. Symplectic BABs9o7H Method (Mads & Nielsen, 2015, BAB's9o7H)
#. Symplectic ABAs5o6HA Method (Mads & Nielsen, 2015, ABAs5o6H)
#. Runge-Kutta 5 - The 5th order integrator from RK45 with Cash-Karp Coefficients.
#. Runge-Kutta 4 - The classic RK4 integrator
#. Midpoint Method
#. Heun's Method
#. Euler's Method
#. Euler-Trapezoidal MethodImplicit Methods [\ **NEW**\ ]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Adaptive Methods
^^^^^^^^^^^^^^^^#. Lobatto IIIC 4(2) (Kroulíková, 2017)
#. Radau IIA 5(2) (Kroulíková, 2017)Fixed Step Methods
^^^^^^^^^^^^^^^^^^#. Backward Euler
#. Implicit Midpoint
#. Crank-Nicolson
#. Lobatto IIIA 2
#. Lobatto IIIB 2
#. Lobatto IIIC 2
#. Radau IA 3
#. Radau IIA 3
#. Lobatto IIIA 4
#. Lobatto IIIB 4
#. Gauss-Legendre 4
#. Radau IA 5
#. Radau IIA 6Minimal Working Example
=======================This example shows the integration of a harmonic oscillator using DESolver.
.. code-block:: python
import desolver as de
import desolver.backend as Ddef rhs(t, state, k, m, **kwargs):
return D.array([[0.0, 1.0], [-k/m, 0.0]])@statey_init = D.array([1., 0.])
a = de.OdeSystem(rhs, y0=y_init, dense_output=True, t=(0, 2*D.pi), dt=0.01, rtol=1e-9, atol=1e-9, constants=dict(k=1.0, m=1.0))
print(a)
a.integrate()
print(a)
print("If the integration was successful and correct, a[0].y and a[-1].y should be near identical.")
print("a[0].y = {}".format(a[0].y))
print("a[-1].y = {}".format(a[-1].y))print("Maximum difference from initial state after one oscillation cycle: {}".format(D.max(D.abs(a[0].y-a[-1].y))))
References
==========Feagin, T. (2009). High-Order Explicit Runge-Kutta Methods. Retrieved from `https://sce.uhcl.edu/rungekutta/ `_
Dormand, J. R. and Prince, P. J. (1980) A family of embedded Runge-Kutta formulae. *Journal of Computational and Applied Mathematics*, 6(1), 19-26. `https://doi.org/10.1016/0771-050X(80)90013-3 `_
Mads, K. and Nielsen, E. (2015). *Efficient fourth order symplectic integrators for near-harmonic separable Hamiltonian systems*. Retrieved from `https://arxiv.org/abs/1501.04345 `_
Kroulíková, T. (2017). RUNGE-KUTTA METHODS (Master's thesis, BRNO UNIVERSITY OF TECHNOLOGY, Brno, Czechia). Retrieved from `https://www.vutbr.cz/www_base/zav_prace_soubor_verejne.php?file_id=174714 `_