expmFrechet | R Documentation |
Compute the Frechet (actually ‘Fréchet’) derivative of the matrix exponential operator.
expmFrechet(A, E, method = c("SPS", "blockEnlarge"), expm = TRUE)
A |
square matrix ( |
E |
the “small Error” matrix,
used in |
method |
string specifying the method / algorithm; the default
|
expm |
logical indicating if the matrix exponential itself, which is computed anyway, should be returned as well. |
Calculation of e^A
and the Exponential Frechet-Derivative
L(A,E)
.
When method = "SPS"
(by default), the
with the Scaling - Padé - Squaring Method is used, in
an R-Implementation of Al-Mohy and Higham (2009)'s Algorithm 6.4.
Scaling (of A and E)
Padé-Approximation of e^A
and L(A,E)
Squaring (reversing step 1)
method = "blockEnlarge"
uses the matrix identity of
f([A E ; 0 A ]) = [f(A) Df(A); 0 f(A)]
for the 2n \times
2n
block matrices where f(A) := expm(A)
and
Df(A) := L(A,E)
. Note that "blockEnlarge"
is much
simpler to implement but slower (CPU time is doubled for n = 100
).
a list with components
expm |
if |
Lexpm |
the Exponential-Frechet-Derivative |
Michael Stadelmann (final polish by Martin Maechler).
see expmCond
.
expm.Higham08
for the matrix exponential.
expmCond
for exponential condition number computations
which are based on expmFrechet
.
(A <- cbind(1, 2:3, 5:8, c(9,1,5,3)))
E <- matrix(1e-3, 4,4)
(L.AE <- expmFrechet(A, E))
all.equal(L.AE, expmFrechet(A, E, "block"), tolerance = 1e-14) ## TRUE
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.