Calculate expm(m*A*t/n) from expm(A*t/n)

5 visualizzazioni (ultimi 30 giorni)
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.

Risposta accettata

Torsten
Torsten il 22 Ago 2025
Modificato: Torsten il 22 Ago 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)
V = 2×2
-0.8246 -0.4160 0.5658 -0.9094
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
D = 2×2
-0.3723 0 0 5.3723
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
expm(A)
ans = 2×2
51.9690 74.7366 112.1048 164.0738
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
V*diag(exp(diag(D)))*inv(V)
ans = 2×2
51.9690 74.7366 112.1048 164.0738
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
c = 2;
expm(c*A)
ans = 2×2
1.0e+04 * 1.1079 1.6146 2.4219 3.5299
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
V*diag(exp(diag(c*D)))*inv(V)
ans = 2×2
1.0e+04 * 1.1079 1.6146 2.4219 3.5299
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
  1 Commento
marcel hendrix
marcel hendrix il 22 Ago 2025
Modificato: marcel hendrix il 22 Ago 2025
Yes, this approach is exactly what I need (my V's are [made] invertible). In addition to quick computation it provides all the eigenvalues, opening the possibility to do modelreduction in a very straightforward way (I need the code for circuit simulation). Also, the eigenvectors should provide valuable insights for discrete control.
Thanks a lot!

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Linear Algebra in Help Center e File Exchange

Tag

Prodotti


Release

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by