MATLAB Function Reference | ![]() ![]() |
Evaluate general matrix function
Syntax
Description
F = funm(A,fun)
for a square matrix argument A
, evaluates the matrix version of the function
fun
. For matrix exponentials, logarithms and square roots, use expm(A)
, logm(A)
and sqrtm(A)
instead.
[F,esterr] = funm(A,fun)
does not print any message, but returns a very rough estimate of the relative error in the computed result.
If A
is symmetric or Hermitian, then its Schur form is diagonal and funm
is able to produce an accurate result.
L = logm(A)
uses funm
to do its computations, but it can get more reliable error estimates by comparing expm(L)
with A
. S = sqrtm(A)
and E = expm(A)
use completely different algorithms.
Examples
Example 1. fun
can be specified using @
:
is the matrix sine of the 3-by-3 magic matrix.
produce the same results to within roundoff error as
In either case, the results satisfy S*S+C*C = I
, where I
=
eye(size(X)).
Algorithm
funm
uses a potentially unstable algorithm. If A
is close to a matrix with multiple eigenvalues and poorly conditioned eigenvectors, funm
may produce inaccurate results. An attempt is made to detect this situation and print a warning message. The error detector is sometimes too sensitive and a message is printed even though the the computed result is accurate.
The matrix functions are evaluated using Parlett's algorithm, which is described in [1].
See Also
expm
, logm
, sqrtm
, function_handle
(@
)
References
[1] Golub, G. H. and C. F. Van Loan, Matrix Computation, Johns Hopkins University Press, 1983, p. 384.
[2] Moler, C. B. and C. F. Van Loan, "Nineteen Dubious Ways to Compute the Exponential of a Matrix," SIAM Review 20, 1979, pp. 801-836.
![]() | functions | fwrite | ![]() |