Pycaputo

Latest version: v0.8.0

Safety actively analyzes 665909 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 2

0.3.0

----------------------------------

Features
^^^^^^^^

* Add support for adaptive time stepping (:ghpr:`32`). This functionality is
very nice and there isn't much literature on the matter so it will likely
need substantial improvements in the future. For the moment, the work of
[Jannelli2020]_ is implement and seems to work reasonably well.

Fixes
^^^^^

* Make all methods use a vector of orders ``alpha`` when solving systems to be
more future proof.

0.2.0

----------------------------------

Dependency changes
^^^^^^^^^^^^^^^^^^

* Bumped minimum Python version to 3.9 (to match latest Numpy).

Features
^^^^^^^^

* Added an example with the fractional Lorenz system (:ghpr:`13`).
* Add a guess for the number of corrector iterations
for :class:`~pycaputo.fode.caputo.PECE` from [Garrappa2010]_.
* Added a modified PECE method from [Garrappa2010]_ in the form of
:class:`~pycaputo.fode.caputo.ModifiedPECE`.
* Implement :class:`~pycaputo.quadrature.riemann_liouville.Simpson`, a
standard 3rd order method.
* Implement :class:`~pycaputo.quadrature.riemann_liouville.CubicHermite`, a
standard 4th order method.
* Implement differentiation methods for the Riemann-Liouville derivatives based
on the Caputo derivative in
:class:`~pycaputo.differentiation.riemann_liouville.RiemannLiouvilleFromCaputoMethod`.
* Support different fractional orders for FODE systems in
:class:`~pycaputo.fode.caputo.ForwardEuler`,
:class:`~pycaputo.fode.caputo.WeightedEuler` and others.
* Add approximation for the Lipschitz constant (:ghpr:`18`).
* Add a (rather slow) wrapper to compute a fractional gradient (:ghpr:`35`).

Fixes
^^^^^

* Fix :class:`~pycaputo.quadrature.riemann_liouville.Trapezoidal` on
uniform grids (:ghissue:`3`).
* Fix Jacobian construction for :class:`~pycaputo.fode.caputo.WeightedEuler`
which gave incorrect results for systems of equations (:ghissue:`11`).
* Add dark variants of plots to the documentation for nicer results.
* Promoto history management to :mod:`pycaputo.history`.

0.1.0

------------------------------

This is the initial release of the project and has some basic functionality
implemented already.

* Evaluate Caputo derivatives of arbitrary real orders; several numerical methods
are implemented (L1, L2, spectral) in :ref:`sec-differentiation`.
* Evaluate Riemann-Liouville integrals of arbitrary real orders; several numerical
methods are implemented (rectangular, trapezoidal, spectral) in
:ref:`sec-quadrature`.
* Solve single-term fractional ordinary differential equations; several numerical
methods are implemented (forward and backward Euler, PECE) in
:ref:`sec-fode`.

The library is not stable in any way. Performance work will likely require
changes to some interfaces.


History (Checkpointing)
=======================

As is well-known, fractional-order derivatives use the whole history of a process.
The :class:`~pycaputo.history.History` class is meant to provide a way to store
and load items from the history in a uniform way, independent on the way the
data is actually stored. For example, the whole history can reside in memory
or it can reside on disk and be loaded only when necessary.

In general, the data that is stored depends on the type of equation that is being
solve and the numerical method used to solve it. However, the usage will always be

.. code:: python

load a value
t, f = history[k]
.. perform some computations with the stored data ...
ynext = y + dt ** alpha * f
... store the new value ...
history.append(t + dt, ynext)

Users that are just trying to obtain the solution of an FODE will not have to
interact with this functionality. The :func:`~pycaputo.stepping.evolve` function
returns appropriate events that contain the solution and the users are responsible
for storage.

.. automodule:: pycaputo.history

Page 2 of 2

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.