nag_matop_complex_gen_matrix_log (f01fjc) (PDF version)
f01 Chapter Contents
f01 Chapter Introduction
NAG C Library Manual

NAG Library Function Document

nag_matop_complex_gen_matrix_log (f01fjc)

+ Contents

    1  Purpose
    7  Accuracy

1  Purpose

nag_matop_complex_gen_matrix_log (f01fjc) computes the principal matrix logarithm, logA, of a complex n by n matrix A, with no eigenvalues on the closed negative real line.

2  Specification

#include <nag.h>
#include <nagf01.h>
void  nag_matop_complex_gen_matrix_log (Nag_OrderType order, Integer n, Complex a[], Integer pda, NagError *fail)

3  Description

Any nonsingular matrix A has infinitely many logarithms. For a matrix with no eigenvalues on the closed negative real line, the principal logarithm is the unique logarithm whose spectrum lies in the strip z:-π<Imz<π.
logA is computed using the Schur–Parlett algorithm for the matrix logarithm described in Higham (2008) and Davies and Higham (2003).

4  References

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
Higham N J (2008) Functions of Matrices: Theory and Computation SIAM, Philadelphia, PA, USA

5  Arguments

1:     orderNag_OrderTypeInput
On entry: the order argument specifies the two-dimensional storage scheme being used, i.e., row-major ordering or column-major ordering. C language defined storage is specified by order=Nag_RowMajor. See Section 3.2.1.3 in the Essential Introduction for a more detailed explanation of the use of this argument.
Constraint: order=Nag_RowMajor or Nag_ColMajor.
2:     nIntegerInput
On entry: n, the order of the matrix A.
Constraint: n0.
3:     a[pda×n]ComplexInput/Output
Note: the i,jth element of the matrix A is stored in
  • a[j-1×pda+i-1] when order=Nag_ColMajor;
  • a[i-1×pda+j-1] when order=Nag_RowMajor.
On entry: the n by n matrix A.
On exit: the n by n principal matrix logarithm, logA.
4:     pdaIntegerInput
On entry: the stride separating row or column elements (depending on the value of order) in the array a.
Constraints:
  • if order=Nag_ColMajor, pdamax1,n;
  • if order=Nag_RowMajor, pdan.
5:     failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

6  Error Indicators and Warnings

NE_ALLOC_FAIL
Allocation of memory failed. The Complex allocatable memory required is approximately 4×n2.
NE_BAD_PARAM
On entry, argument value had an illegal value.
NE_EIGENVALUES
A was found to have eigenvalues on the closed, negative real line. The principal logarithm cannot be calculated in this case.
NE_INT
On entry, n=value.
Constraint: n0.
NE_INT_2
On entry, pda=value and n=value.
Constraint: pdamax1,n.
NE_INTERNAL_ERROR
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact NAG for assistance.
An unexpected internal error occured when ordering the eigenvalues of A. Please contact NAG.
Computation of the square root of a submatrix failed.
Note:  this failure should not occur and suggests that the function has been called incorrectly.
The function was unable to compute the Schur decomposition of A.
Note:  this failure should not occur and suggests that the function has been called incorrectly.
There was an error whilst reordering the Schur form of A.
Note:  this failure should not occur and suggests that the function has been called incorrectly.
There was a problem obtaining the weights and nodes from the Gaussian quadrature function nag_quad_1d_gauss_wgen (d01tcc). This failure should not occur, nag_quad_1d_gauss_wgen (d01tcc) returns fail.errnum=value; please send this information to NAG for further advice.
NE_SINGULAR
The linear equations to be solved are nearly singular and the Padé approximant may have no correct figures.
Note:  this failure should not occur and suggests that the function has been called incorrectly.

7  Accuracy

For a normal matrix A (for which AHA=AAH), the Schur decomposition is diagonal and the algorithm reduces to evaluating the logarithm of the eigenvalues of A and then constructing logA using the Schur vectors. See Section 9.4 of Higham (2008) for details and further discussion.
For discussion of the condition of the matrix logarithm see Section 11.2 of Higham (2008) floating-point operations.

8  Further Comments

Up to 4×n2 of Complex allocatable memory may be required.
The cost of the algorithm is On3. The exact cost depends on the eigenvalue distribution of A; see Algorithm 11.11 of Higham (2008).
nag_matop_real_gen_matrix_log (f01ejc) can be used to find the principal logarithm of a real matrix.

9  Example

This example finds the principal matrix logarithm of the matrix
A = 1.0+2.0i 0.0+1.0i 1.0+0.0i 3.0+2.0i 0.0+3.0i -2.0+0.0i 0.0+0.0i 1.0+0.0i 1.0+0.0i -2.0+0.0i 3.0+2.0i 0.0+3.0i 2.0+0.0i 0.0+1.0i 0.0+1.0i 2.0+3.0i .

9.1  Program Text

Program Text (f01fjce.c)

9.2  Program Data

Program Data (f01fjce.d)

9.3  Program Results

Program Results (f01fjce.r)


nag_matop_complex_gen_matrix_log (f01fjc) (PDF version)
f01 Chapter Contents
f01 Chapter Introduction
NAG C Library Manual

© The Numerical Algorithms Group Ltd, Oxford, UK. 2012