octave: Functions of a Matrix

 
 18.4 Functions of a Matrix
 ==========================
 
  -- : expm (A)
      Return the exponential of a matrix.
 
      The matrix exponential is defined as the infinite Taylor series
 
           expm (A) = I + A + A^2/2! + A^3/3! + ...
 
      However, 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 Padé approximation method with three
      step preconditioning (SIAM Journal on Numerical Analysis, 1977).
      Diagonal Padé 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 Padé
      approximation when ‘Dq(A)’ is ill-conditioned.
 
      See also: Seelogm XREFlogm, Seesqrtm XREFsqrtm.
 
  -- : S = logm (A)
  -- : S = logm (A, OPT_ITERS)
  -- : [S, ITERS] = logm (...)
      Compute the matrix logarithm of the square matrix A.
 
      The implementation utilizes a Padé approximant and the identity
 
           logm (A) = 2^k * logm (A^(1 / 2^k))
 
      The optional input OPT_ITERS is the maximum number of square roots
      to compute and defaults to 100.
 
      The optional output ITERS is the number of square roots actually
      computed.
 
      See also: Seeexpm XREFexpm, Seesqrtm XREFsqrtm.
 
  -- : S = sqrtm (A)
  -- : [S, ERROR_ESTIMATE] = sqrtm (A)
      Compute the matrix square root of the square matrix A.
 
      Ref: N.J. Higham.  ‘A New sqrtm for MATLAB’.  Numerical Analysis
      Report No.  336, Manchester Centre for Computational Mathematics,
      Manchester, England, January 1999.
 
      See also: Seeexpm XREFexpm, Seelogm XREFlogm.
 
  -- : kron (A, B)
  -- : kron (A1, A2, ...)
      Form the Kronecker product of two or more matrices.
 
      This is 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
 
      If there are more than two input arguments A1, A2, ..., AN the
      Kronecker product is computed as
 
           kron (kron (A1, A2), ..., AN)
 
      Since the Kronecker product is associative, this is well-defined.
 
  -- : blkmm (A, B)
      Compute products of matrix blocks.
 
      The blocks are given as 2-dimensional subarrays of the arrays A, B.
      The size of A must have the form ‘[m,k,...]’ and size of B must be
      ‘[k,n,...]’.  The result is then of size ‘[m,n,...]’ and is
      computed as follows:
 
           for i = 1:prod (size (A)(3:end))
             C(:,:,i) = A(:,:,i) * B(:,:,i)
           endfor
 
  -- : X = sylvester (A, B, C)
      Solve the Sylvester equation
 
           A X + X B = C
 
      using standard LAPACK subroutines.
 
      For example:
 
           sylvester ([1, 2; 3, 4], [5, 6; 7, 8], [9, 10; 11, 12])
              ⇒ [ 0.50000, 0.66667; 0.66667, 0.50000 ]