dummy-link

Expokit

Julia implementation of EXPOKIT routines

Readme

Build Status

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

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.

First Commit

07/28/2014

Last Touched

11 months ago

Commits

48 commits

Requires:

Used By: