Compute Matrix Exponential exp(A t) * v directly
Compute \exp(A t) * v directly, without evaluating \exp(A).
expAtv(A, v, t = 1, method = "Sidje98", rescaleBelow = 1e-6, tol = 1e-07, btol = 1e-07, m.max = 30, mxrej = 10, verbose = getOption("verbose"))
A |
n x n matrix |
v |
n - vector |
t |
number (scalar); |
method |
a string indicating the method to be used; there's only one currently; we would like to add newer ones. |
rescaleBelow |
if |
tol, btol |
tolerances; these are tuning constants of the "Sidje1998" method which the user should typically not change. |
m.max, mxrej |
integer constants you should only change if you know what you're doing |
verbose |
flag indicating if the algorithm should be verbose.. |
a list with components
eAtv |
.....fixme... |
Ravi Varadhan, Johns Hopkins University;
Martin Maechler (cosmetic, generalization to sparse matrices;
rescaling (see rescaleBelow
).
Roger B. Sidje (1998) EXPOKIT: Software Package for Computing Matrix Exponentials. ACM - Transactions On Mathematical Software 24(1), 130–156.
((NOT yet available!))
Al-Mohy, A. and Higham, N. (2011).
Computing the Action of the Matrix Exponential, with an Application
to Exponential Integrators.
SIAM Journal on Scientific Computing, 33(2), 488–511.
source(system.file("demo", "exact-fn.R", package = "expm")) ##-> rnilMat() ; xct10 set.seed(1) (s5 <- Matrix(m5 <- rnilMat(5))); v <- c(1,6:9) (em5 <- expm(m5)) r5 <- expAtv(m5, v) r5. <- expAtv(s5, v) stopifnot(all.equal(r5, r5., tolerance = 1e-14), all.equal(c(em5 %*% v), r5$eAtv)) v <- 10:1 with(xct10, all.equal(expm(m), expm)) all.equal(c(xct10$expm %*% v), expAtv(xct10$m, v)$eAtv)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.