Calculate expm(m*A*t/n) from expm(A*t/n)
5 views (last 30 days)
Show older comments
Is it possible to efficiently calculate M = expm(m*A*T/n) given N = expm(A*T/n)? Here m, n, and T are scalars, m <= n.
The idea is to calculcate N only once, and thereafter use it to quickly approximate M for any m <= n.
A formula to find expm(A*T/m) given expm(A*T) is also interesting, as is a formula to find expm(A*T) as some combination of fractions of expm(A*T ).
I see there is now a function expmv(A,b,tvals), but its internal factors do not seem to be available.
0 Comments
Accepted Answer
Torsten
on 22 Aug 2025
Edited: Torsten
on 22 Aug 2025
Your question is how to get expm(c*A) given A for a scalar c.
Diagonalize A such that A*V = V*D.
It follows that (c*A)*V = V*(c*D) and - if V is invertible - c*A = V*(c*D)*inv(V).
Thus expm(c*A) = V*diag(exp(diag(c*D)))*inv(V) .
Summarizing: Saving V and inv(V) (if V is invertible) gives you expm(c*A) from a diagonalization of the matrix A as A = V*D*inv(V).
A = [1 2; 3 4];
[V,D] = eig(A)
expm(A)
V*diag(exp(diag(D)))*inv(V)
c = 2;
expm(c*A)
V*diag(exp(diag(c*D)))*inv(V)
More Answers (0)
See Also
Categories
Find more on Linear Algebra in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!