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. http://eprints.ma.man.ac.uk/1536/
I am also interested in large matrices, and particularly on sparse large matrices that still take up ~ 100GB despite being sparse (!)
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.
Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.