is computed using the Schur–Parlett algorithm described in
Higham (2008) and
Davies and Higham (2003).
The scalar function
, and the derivatives of
, are returned by function
f which, given an integer
, evaluates
at a number of points
, for
, on the comlpex plane. nag_matop_complex_gen_matrix_fun_usd (f01fmc) is therefore appropriate for functions that can be evaluated on the complex plane and whose derivatives, of arbitrary order, can also be evaluated on the complex plane.
Davies P I and Higham N J (2003) A Schur–Parlett algorithm for computing matrix functions. SIAM J. Matrix Anal. Appl. 25(2) 464–485
For a normal matrix
(for which
), the Schur decomposition is diagonal and the algorithm reduces to evaluating
$ at the eigenvalues of
and then constructing
using the Schur vectors. See Section 9.4 of
Higham (2008) for further discussion of the Schur–Parlett algorithm.
The cost of the Schur–Parlett algorithm depends on the spectrum of
, but is roughly between
and
floating-point operations. There is an additional cost in evaluating
and its derivatives.
If
is complex Hermitian then it is recommended that
nag_matop_complex_herm_matrix_fun (f01ffc) be used as it is more efficient and, in general, more accurate than nag_matop_complex_gen_matrix_fun_usd (f01fmc).
For further information on matrix functions, see
Higham (2008).
nag_matop_real_gen_matrix_fun_usd (f01emc) can be used to find the matrix function
for a real matrix
.