Skip to content

FdeSolver.jl: A Julia package for the numerical solution of fractional differential equations (FDEs) as well as systems of equations.

License

Notifications You must be signed in to change notification settings

JuliaTurkuDataScience/FdeSolver.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 FractionalDiffEq Julia Package that provides solutions of differential equations with different fractional operators, and earlier tools that are available in Matlab.

The implemented models are generic and broadly applicable to modeling multivariate signals from a single source or collected across multiple sources. The dynamical models implemented in this package were initially developed for modeling dynamics of interacting microbial communities (Khalighi et al. 2022) but the models are more broadly applicable and applicable to studying multi-omic and host-microbiome interactions.

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 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 and Newton Raphson method.

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.

Acknowledgments

We are grateful to all contributors. New issues and pull requests are welcome.

This research has received funding from

  • the Horizon 2020 Programme of the European Union within the FindingPheno project under grant agreement No 952914.
  • Research Council of Finland (grant 330887)

Package documentation is compiled according to the guidelines provided in PkgTutorial.jl.

Publications

Kindly cite this work as follows:

  • Fdesolver: A Julia package for solving fractional differential equations. M Khalighi, G Benedetti, L Lahti. ACM Transactions on Mathematical Software, 2024, doi.org/10.1145/3680280.

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

  • Ebola epidemic model with dynamic population and memory, F Ndaïrou, M Khalighi, and L Lahti, Chaos, Solitons & Fractals, 170: 113361, 2023, doi:10.1016/j.chaos.2023.113361.

  • Quantifying the impact of ecological memory on the dynamics of interacting communities. M Khalighi, G Sommeria-Klein, D Gonze, K Faust, L Lahti. PLoS Computational Biology 18(6), 2022, doi:10.1371/journal.pcbi.1009396.

  • 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.