expmv
Description
calculates the product of a matrix exponential and a vector. This function computes
F
= expmv(A
,b
,t
)expm(t*A)*b
without explicitly forming the matrix exponential
expm(t*A)
. Here, A
is an
n
-by-n
square matrix, b
is an
n
-by-1
column vector, and t
is a
scalar. The output F
is an n
-by-1 column
vector.
A
can also be a function handle, where A(flag,X)
must accept an input matrix X
, create a square matrix
Am
with an order that is equal to the column length of
X
, and return the following values for the indicated flag:
A("real",X)
returns logical1
(true
) if the square matrixAm
is real and returns logical0
(false
) otherwise.A("notransp",X)
returnsAm*X
.A("transp",X)
returnsAm'*X
.
computes F
= expmv(A
,b
,tvals
)expm(t*A)*b
without explicitly forming
expm(t*A)
for each element t
in
tvals
. Here, tvals
is a vector of length
m
and the output F
is an
n
-by-m
matrix such that each column of
F
is F(:,j) = expm(tvals(j)*A)*b
for j =
1:m
.
For an equally spaced tvals
, such as a time vector with a fixed time
step, expmv
uses an efficient algorithm that reuses information based on
the spacing pattern of tvals
. MATLAB® uses the isuniform
function to check whether
tvals
is equally spaced.
Examples
Input Arguments
References
[1] Al-Mohy, Awad H., and Nicholas J. Higham. “Computing the Action of the Matrix Exponential, with an Application to Exponential Integrators.” SIAM Journal on Scientific Computing 33, no. 2 (January 2011): 488–511. https://doi.org/10.1137/100788860.
Version History
Introduced in R2023b