I want to compute the action of matrix exponential on a vector. My matrix $B$ is of a very large size and it is sparse, e.g., it is written as follows:
size = 350;
vector0 = Range[0., 300., 300./(size - 1)];
B0 = NDSolve`FiniteDifferenceDerivative[2, vector0,
"DifferenceOrder" -> 20]["DifferentiationMatrix"];
B = SparseArray@KroneckerProduct[B0, B0];
vector = Flatten@KroneckerProduct[vector0, vector0];
Dimensions[B]
Based on the documentation and the discussion here, I keep going simply as comes next:
sol2 = MatrixExp[B, vector, Method -> "Krylov"]; // AbsoluteTiming
This took 31 seconds in my office laptop. It computes the action successfully, BUT it is getting slower and slower when the dimension grows. In the above example, the dimension of $B$ is $122500\times 122500$, while in my real practice I wish to compute this action for matrices of dimension up to million.
So, I wish to know that is it possible to speed up such a computation by imposing a Compile or by a tolerance or something like that? Since, I am not looking for a result which is correct up to 15 digits! A lower accuracy, maybe up to 6 digits is enough.
Any hints would be welcomed and thanks to Mr. Wizard for encouraging asking this question.
Bshould represent... – Henrik Schumacher Dec 30 '17 at 18:04MatrixExp[1. B].vectoris the solution of the parabolic flow associated toB(operator semi group generated byB) (similar to heat flow). Implicit Euler and Crank-Nicolson are two methods for computing the solutionMatrixExp[t. B].vectoriteratively (for alltbetween, say0and1. It depends however a bit on the operatorB: If it "diffusion dominated" (i.e., the symmetric part is dominant and semidefinite), then it might work very well; for "convection dominated" problems (e.g. significant nonsymmetric part), this may work not so well. – Henrik Schumacher Dec 30 '17 at 20:15MatrixExp[t.B].vecotr, a fast code was given in the answer of the folllowing:https://mathematica.stackexchange.com/questions/78278/ndsolve-in-mathematica-wont-use-all-the-cores-avaiable/78578#78578. – Faz Dec 30 '17 at 20:28