SciFracX / FractionalCalculus.jl

FractionalCalculus.jl: A Julia package for high performance, comprehensive and high precision numerical fractional calculus computing.
http://scifracx.org/FractionalCalculus.jl/dev/
MIT License
35 stars 5 forks source link
algorithms caputo differentiation differintegral fractional-calculus grunwald-letnikov integration julia matrix-discrete numerical riemann-liouville

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:

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!!