File Exchange

image thumbnail

Matrix exponential times a vector.

version 1.0 (9.25 KB) by

Computing the matrix exponential times a vector without explicitly computing the matrix exponential.



View License

This submission contains two functions for computing EXPM(t*A)*b without explicitly forming EXPM(t*A), where A is an n-by-n matrix and b is an n-by-1 vector. This is the problem of computing the action of the matrix exponential on a vector.

EXPMV(t,A,B, computes EXPM(t*A)*B, while EXPMV_TSPAN(A,b,t0,tmax,q) computes EXPM(t*A)*b for q+1 >= 2 equally spaced values of T between T0 and TMAX.

The functions work for any matrix A, and use just matrix-vector products with A and A^*.

Function TEST.M runs a simple test of the codes.

Details on the underlying algorithms can be found in

A. H. Al-Mohy and N. J. Higham. Computing the action of the matrix exponential, with an application to exponential integrators. MIMS EPrint 2010.30, The University of Manchester, 2010; to appear in SIAM J. Sci. Comput.

Comments and Ratings (3)

Nike Dattani

I am also interested in large matrices, and particularly on sparse large matrices that still take up ~ 100GB despite being sparse (!)


Ohad (view profile)


Ohad (view profile)

Has anyone used this algorithm with large matrices?
It seems to be extremely fast for small matrices, but on matrices on the order of gigabytes I get much slower results than simpler methods.

MATLAB Release
MATLAB 7.11 (R2010b)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video

Win prizes and improve your MATLAB skills

Play today