FractionalCalculus.jl

FractionalCalculus.jl: A Julia package for high performance, comprehensive and high precision numerical fractional calculus computing.
Author SciFracX
Popularity
34 Stars
Updated Last
3 Months Ago
Started In
June 2021

FractionalCalculus.jl

building codecov license license DOI GitHub issues GitHub stars GitHub forks

FractionalCalculus.jl provides support for fractional calculus computing.

πŸŽ‡ Installation

If you have already installed Julia, you can install FractionalCalculus.jl in REPL using Julia package manager:

pkg> add FractionalCalculus

🦸 Quick start

Derivative

To compute the fractional derivative in a specific point, for example, compute $\alpha = 0.2$ derivative of $f(x) = x$ in $x = 1$ with step size $h = 0.0001$ using Riemann Liouville sense:

julia> fracdiff(x->x, 0.2, 1, 0.0001, RLDiffL1())
1.0736712740308347

This will return the estimated value with high precision.

Integral

To compute the fractional integral in a specific point, for example, compute the semi integral of $f(x) = x$ in $x = 1$ with step size $h = 0.0001$ using Riemann-Liouville sense:

julia> fracint(x->x, 0.5, 1, 0.0001, RLIntApprox())
0.7522525439593486

This will return the estimated value with high precision.

πŸ’» All algorithms

Current Algorithms
β”œβ”€β”€ FracDiffAlg
β”‚   β”œβ”€β”€ Caputo
|   |   β”œβ”€β”€ CaputoDirect
|   |   β”œβ”€β”€ CaputoTrap
|   |   β”œβ”€β”€ CaputoDiethelm
|   |   β”œβ”€β”€ CaputoHighPrecision
|   |   β”œβ”€β”€ CaputoL1
|   |   β”œβ”€β”€ CaputoL2
|   |   └── CaputoHighOrder
|   |
β”‚   β”œβ”€β”€ GrΓΌnwald Letnikov
|   |   β”œβ”€β”€ GLDirect
|   |   β”œβ”€β”€ GLMultiplicativeAdditive
|   |   β”œβ”€β”€ GLLagrangeThreePointInterp
|   |   └── GLHighPrecision
|   |
|   β”œβ”€β”€ Riemann Liouville
|   |    β”œβ”€β”€ RLDiffL1
|   |    β”œβ”€β”€ RLDiffL2
|   |    β”œβ”€β”€ RLDiffL2C
|   |    β”œβ”€β”€ RLLinearSplineInterp
|   |    β”œβ”€β”€ RLDiffMatrix
|   |    β”œβ”€β”€ RLG1
|   |    └── RLD
|   | 
|   β”œβ”€β”€ Hadamard
|   |    β”œβ”€β”€ HadamardLRect
|   |    β”œβ”€β”€ HadamardRRect
|   |    └── HadamardTrap
|   |
|   β”œβ”€β”€ Riesz
|   |    β”œβ”€β”€ RieszSymmetric
|   |    └── RieszOrtigueira
|   |
|   β”œβ”€β”€ Caputo-Fabrizio
|   |    └── CaputoFabrizioAS
|   |
|   └── Atanagana Baleanu
|        └── AtanganaSeda
|
└── FracIntAlg
    β”œβ”€β”€ Riemann Liouville
    |   β”œβ”€β”€ RLDirect
    |   β”œβ”€β”€ RLPiecewise
    |   β”œβ”€β”€ RLLinearInterp
    |   β”œβ”€β”€ RLIntApprox
    |   β”œβ”€β”€ RLIntMatrix
    |   β”œβ”€β”€ RLIntSimpson
    |   β”œβ”€β”€ RLIntTrapezoidal
    |   β”œβ”€β”€ RLIntRectangular
    |   └── RLIntCubicSplineInterp
    |
    └── Hadamard
        └── HadamardMat

For detailed usage, please refer to our manual.

πŸ–ΌοΈ Example

Let's see examples here:

Compute the semi-derivative of $f(x) = x$ in the interval $\left[0, 1\right]$:

Plot

We can see that computing retains high precision⬆️.

Compute different order derivative of $f(x) = x$:

Different Order

Also different order derivative of $f(x) = \sin(x)$:

Different Order of sin

And also different order integral of $f(x) = x$:

Different Order Of x

πŸ§™ Symbolic Fractional Differentiation and Integration

Thanks to SymbolicUtils.jl, FractionalCalculus.jl can do symbolic fractional differentiation and integration now!!

julia> using FractionalCalculus, SymbolicUtils
julia> @syms x
julia> semidiff(log(x))
log(4x) / sqrt(Ο€x)
julia> semiint(x^4)
0.45851597901024005(x^4.5)

πŸ“’ Status

Right now, FractionalCalculus.jl has only supports for little algorithms:

Fractional Derivative:

  • Caputo fractional derivative
  • Grunwald-Letnikov fractional derivative
  • Riemann-Liouville fractional derivative
  • Riesz fractional derivative
  • Hadamard fractional derivative
  • Caputo-Fabrizio fractional derivative
  • Atangana-Baleanu fractional derivative
  • Marchaud fractional derivative
  • Weyl fractional derivative
  • ......

Fractional Integral:

  • Riemann-Liouville fractional integral
  • Hadamard fractional integral
  • Atangana-Baleanu fractional integral
  • ......

πŸ“š Reference

FractionalCalculus.jl is built upon the hard work of many scientific researchers, I sincerely appreciate what they have done to help the development of science and technology.

πŸ₯‚ Contributing

If you are interested in Fractional Calculus and Julia, welcome to raise an issue or file a Pull Request!!