FdeSolver.jl: Solving fractional differential equations

Stable CI codecov DOI

This is a Julia package for fractional differential equations and ODEs. It provides numerical solutions for nonlinear fractional ordinary differential equations (in the sense of Caputo).

Related work includes the independent FractionalCalculus Julia Package that covers fractional operators, and earlier tools that are available in Matlab.

Publications

The package development is linked with the following publications/preprints:

  • Three-species Lotka-Volterra model with respect to Caputo and Caputo-Fabrizio fractional operators. M Khalighi, L Eftekhari, S Hosseinpour, L Lahti. Symmetry 13 (3):368, 2021. doi:10.3390/sym13030368

  • Quantifying the impact of ecological memory on the dynamics of interacting communities. M Khalighi, G Sommeria-Klein, D Gonze, K Faust, L Lahti. bioRxiv 2021.09.01.458486 doi:10.1101/2021.09.01.458486

Method

We implement the predictor-corrector algorithms with a sufficient convergence and accuracy, including fast Fourier transform technique that gives us high computation speed. Interested readers can also find the stability of the methods and see how to implement the methods for solving multi-term fractional differential equations.

Let us suppose the following initial value problem with the Caputo fractional derivative ${}_{C}\!D_{t_0}^\beta$ for $\beta>0$:

\[{}_{C}\!D_{t_0}^{\beta}y(t)=f(t,y(t))\]

with the initial condition:

\[y(t_0)=y_0,y^{(1)}(t_0)=y^{(1)}_0,...,y^{(m-1)}(t_0)=y^{(m-1)}_0\]

where m is the smallest integer or equal to the order of derivative.

We solve the problem by using predictor corrector method (the equation (14) from this paper).

Installation

If Julia is installed correctly, you can import FdeSolver.jl as:

import Pkg; Pkg.add("FdeSolver")

A few methods on its usage are explained in Examples.