Description Usage Arguments Details Value Author(s) References See Also Examples
Compute the exponential condition number of a matrix, either with approximation methods, or exactly and very slowly.
1 2 3 
A 
a square matrix 
method 
a string; either compute 1norm or Fnorm approximations, or compte these exactly. 
expm 
logical indicating if the matrix exponential itself, which is computed anyway, should be returned as well. 
abstol, reltol 
for 
give.exact 
for 
method = "exact"
, aka KroneckerSylvester algorithm, computes a
Kronecker matrix of dimension n^2 x n^2 and
hence, with O(n^5) complexity, is prohibitely slow for
nonsmall n. It computes the exact exponentialcondition
numbers for both the Frobenius and/or the 1norm, depending on
give.exact
.
The two other methods compute approximations, to these norms, i.e., estimate them, using algorithms from Higham, chapt.~3.4, both with complexity O(n^3).
when expm = TRUE
, for method = "exact"
, a
list
with components
expm 
containing the matrix exponential, 
expmCond(F1) 
numeric scalar, (an approximation to) the (matrix
exponential) condition number, for either the 1norm
( 
When expm
is false and method
one of the approximations
("*.est"
), the condition number is returned directly (i.e.,
numeric
of length one).
Michael Stadelmann (final polish by Martin Maechler).
Awad H. AlMohy and Nicholas J. Higham (2009). Computing Fréchet Derivative of the Matrix Exponential, with an application to Condition Number Estimation; MIMS EPrint 2008.26; Manchester Institute for Mathematical Sciences, U. Manchester, UK. http://eprints.ma.man.ac.uk/1218/01/covered/MIMS_ep2008_26.pdf
Higham, N.~J. (2008). Functions of Matrices: Theory and Computation; Society for Industrial and Applied Mathematics, Philadelphia, PA, USA.
Michael Stadelmann (2009) Matrixfunktionen ...
Master's thesis; see reference in expm.Higham08
.
expm.Higham08
for the matrix exponential.
1 2 3 4 5 6 7 8 9 10 11  set.seed(101)
(A < matrix(round(rnorm(3^2),1), 3,3))
eA < expm.Higham08(A)
stopifnot(all.equal(eA, expm::expm(A), tolerance= 1e15))
C1 < expmCond(A, "exact")
C2 < expmCond(A, "1.est")
C3 < expmCond(A, "F.est")
all.equal(C1$expmCond1, C2$expmCond, tolerance= 1e15)# TRUE
all.equal(C1$expmCondF, C3$expmCond)# relative difference of 0.001...

Loading required package: Matrix
Attaching package: 'expm'
The following object is masked from 'package:Matrix':
expm
[,1] [,2] [,3]
[1,] 0.3 0.2 0.6
[2,] 0.6 0.3 0.1
[3,] 0.7 1.2 0.9
[1] "Modes: numeric, NULL" "Lengths: 1, 0"
[3] "target is numeric, current is NULL"
[1] "Modes: numeric, NULL" "Lengths: 1, 0"
[3] "target is numeric, current is NULL"
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.