Calculate expm(m*A*t/n) from expm(A*t/n)
조회 수: 5 (최근 30일)
이전 댓글 표시
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
채택된 답변
Torsten
2025년 8월 22일
편집: Torsten
2025년 8월 22일
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)
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!