Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/SciFracX/FractionalCalculus.jl

FractionalCalculus.jl: A Julia package for high performance, comprehensive and high precision numerical fractional calculus computing.
https://github.com/SciFracX/FractionalCalculus.jl

algorithms caputo differentiation differintegral fractional-calculus grunwald-letnikov integration julia matrix-discrete numerical riemann-liouville

Last synced: 3 months ago
JSON representation

FractionalCalculus.jl: A Julia package for high performance, comprehensive and high precision numerical fractional calculus computing.

Awesome Lists containing this project

README

        

# 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:

```julia
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
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
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](https://scifracx.org/FractionalCalculus.jl/dev/Derivative/derivativeapi/).

## πŸ–ΌοΈ Example

Let's see examples here:

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

![Plot](/docs/src/assets/semiderivativeplot.png)

We can see that computing retains high precision⬆️.

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

![Different Order](/docs/src/assets/different_order_x_derivative.png)

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

![Different Order of sin](/docs/src/assets/different_order_sin_derivative.png)

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

![Different Order Of x](/docs/src/assets/different_order_x_integral.png)

## πŸ§™ Symbolic Fractional Differentiation and Integration

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

```julia
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:

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

Fractional Integral:
- [x] Riemann-Liouville fractional integral
- [x] 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!!