Functions of a Matrix Previous: Matrix Factorizations Up: Linear Algebra



Functions of a Matrix

expm (a) Loadable Function
Return the exponential of a matrix defined as the infinite Taylor series
          expm(a) = I + a + a^2/2! + a^3/3! + ...
          

The Taylor series is not the way to compute the matrix exponential; see Moler and Van Loan Nineteen Dubious Ways to Compute the Exponential of a Matrix SIAM Review, 1978. This routine uses Ward's diagonal Pade' approximation method with three step preconditioning (SIAM Journal on Numerical Analysis 1977). Diagonal Pade' approximations are rational polynomials of matrices

               -1
          D (a)   N (a)
          

whose Taylor series matches the first 2q+1 terms of the Taylor series above; direct evaluation of the Taylor series (with the same preconditioning steps) may be desirable in lieu of the Pade' approximation when Dq(a) is ill-conditioned.

logm (a) Function File
Compute the matrix logarithm of the square matrix a. Note that this is currently implemented in terms of an eigenvalue expansion and needs to be improved to be more robust.

[result error_estimate] = sqrtm (a) Loadable Function
Compute the matrix square root of the square matrix a.

Ref: Nicholas J. Higham. A new sqrtm for MATLAB. Numerical Analysis Report No. 336 Manchester Centre for Computational Mathematics, Manchester England, January 1999.

kron (a b) Function File
Form the kronecker product of two matrices defined block by block as
          x = [a(i j) b]
          

For example

          kron (1:4 ones (3, 1))
                =>  1  2  3  4
                    1  2  3  4
                    1  2  3  4
          

x = syl (a b, c) Loadable Function
Solve the Sylvester equation
          A X + X B + C = 0
          
using standard LAPACK subroutines. For example
          syl ([1 2; 3, 4], [5, 6; 7, 8], [9, 10; 11, 12])
               => [ -0.50000 -0.66667; -0.66667, -0.50000 ]