This article is dedicated to the calculation of matrix functions. Before defining what they are, let's briefly explain what they are not. Suppose we have a sufficiently regular function f and a square matrix A of order n with coefficients a
i,j
, real or complex. The matrix f (A) of order nis not the matrix whose elements are f (a
i,j
), in which case the calculation would be trivial. The definitions of f (A) given below are intended to reproduce, for a matrix, most of the properties of scalar functions. In the first part, we present the definitions and main methods of calculating all the elements of f (A). This part is inspired by the book
which contains the state of the art for calculating f (A), although some of the methods described have been slightly improved since that book was published. You can also consult
with profit.
Algorithms for f (A) aim to calculate the n
2
elements of the matrix. They often use methods based on factorizations of the matrix A using orthogonal transformations and/or approximations of the function f allowing easier calculation, e.g. polynomials or rational fractions. The corresponding algorithms therefore have a cost proportional to n
3
. It is therefore not feasible, even with today's powerful computers, to calculate f (A) for very large matrices. As it happens, many applications only need to calculate f (A)v where v is a given vector. This can be done, without explicitly calculating all the elements of f (A), using iterative Krylov methods which can be applied to very large hollow matrices and which we will describe in a second section.
Finally, there are other applications where we only need to calculate scalars u
T
f (A)v, u and v being given vectors. Methods for efficiently calculating bounds or approximations of these quantities will be presented in a third and final section.