## Expokit.jl

Julia implementation of EXPOKIT routines
Popularity
19 Stars
Updated Last
1 Year Ago
Started In
July 2014 # Expokit

This package provides Julia implementations of some routines contained in EXPOKIT. Those routines allow an efficient calculation of the action of matrix exponentials on vectors for large sparse matrices. For more details about the methods see R.B. Sidje, ACM Trans. Math. Softw., 24(1):130-156, 1998 (or its preprint).

Note: Apart from `expmv` (which is called `expv` in EXPOKIT) also `phimv`, `padm` and `chbv` are available.

## Usage

`Pkg.add("Expokit")`

## expmv

`w = expmv!{T}( w::Vector{T}, t::Number, A, v::Vector{T}; kwargs...)`

The function `expmv!` calculates `w = exp(t*A)*v`, where `A` is a matrix or any type that supports `size`, `eltype` and `mul!` and `v` is a dense vector by using Krylov subspace projections. The result is stored in `w`.

The following keywords are supported

• `tol`: tolerance to control step size (default: `1e-7`)
• `m`: size of Krylov subspace (default: `min(30,size(A,1))`)
• `norm`: user-supplied function to calculate vector norm (dafault: `Base.norm`)
• `anorm`: operator/matrix norm of `A` to estimate first time-step (default: `opnorm(A, Inf)`)

For convenience, the following versions of `expmv` are provided

```v = expmv!{T}( t::Number, A, v::Vector{T}; kwargs...)
w = expmv{T}( t::Number, A, v::Vector{T}; kwargs...)```

## phimv

`w = phimv!{T}( w::Vector{T}, t::Number, A, u::Vector{T}, v::Vector{T}; kwargs...)`

The function `phimv!` calculates `w = e^{tA}v + t φ(t A) u` with `φ(z) = (exp(z)-1)/z`, where `A` is a matrix or any type that supports `size`, `eltype` and `mul!`, `u` and `v` are dense vectors by using Krylov subspace projections. The result is stored in `w`. The supported keywords are the same as for `expmv!`.

## chbv

`chbv!{T}(w::Vector{T}, A, v::Vector{T})`

The function `chbv!` calculates `w = exp(A)*v` using the partial fraction expansion of the uniform rational Chebyshev approximation of type (14,14).

`padm(A; p=6)`
The function `padm` calculates the matrix exponential `exp(A)` of `A` using the irreducible (p,p)-degree rational Pade approximation to the exponential function.