Skip to content

SciFracX/FractionalCalculus.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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