Accelerating the pace of engineering and science

• Trials

# logm

Matrix logarithm

## Syntax

L = logm(A)
[L, exitflag] = logm(A)

## Description

L = logm(A) is the principal matrix logarithm of A, the inverse of expm(A). L is the unique logarithm for which every eigenvalue has imaginary part lying strictly between –π and π. If A is singular or has any eigenvalues on the negative real axis, the principal logarithm is undefined. In this case, logm computes a nonprincipal logarithm and returns a warning message.

[L, exitflag] = logm(A) returns a scalar exitflag that describes the exit condition of logm:

• If exitflag = 0, the algorithm was successfully completed.

• If exitflag = 1, too many matrix square roots had to be computed. However, the computed value of L might still be accurate.

The input A can have class double or single.

## Limitations

For most matrices:

`logm(expm(A)) = A = expm(logm(A))`

These identities may fail for some A. For example, if the computed eigenvalues of A include an exact zero, then logm(A) generates infinity. Or, if the elements of A are too large, expm(A) may overflow.

## Examples

Suppose A is the 3-by-3 matrix

```        1        1        0
0        0        2
0        0       -1```

and Y = expm(A) is

```Y =
2.7183    1.7183    1.0862
0    1.0000    1.2642
0         0    0.3679```

Then A = logm(Y) produces the original matrix A.

```Y =
1.0000    1.0000    0.0000
0         0    2.0000
0         0   -1.0000```

But log(A) involves taking the logarithm of zero, and so produces

```ans =
0.0000                  0           -35.5119
-Inf               -Inf             0.6931
-Inf               -Inf             0.0000 + 3.1416i```

expand all

### Tips

If A is real symmetric or complex Hermitian, then so is logm(A).

Some matrices, like A = [0 1; 0 0], do not have any logarithms, real or complex, so logm cannot be expected to produce one.

### Algorithms

The algorithm logm uses is described in [1].

## References

[1] Davies, P. I. and N. J. Higham, "A Schur-Parlett algorithm for computing matrix functions," SIAM J. Matrix Anal. Appl., Vol. 25, Number 2, pp. 464-485, 2003.

[2] Cheng, S. H., N. J. Higham, C. S. Kenney, and A. J. Laub, "Approximating the logarithm of a matrix to specified accuracy," SIAM J. Matrix Anal. Appl., Vol. 22, Number 4, pp. 1112-1125, 2001.

[3] Higham, N. J., "Evaluating Pade approximants of the matrix logarithm," SIAM J. Matrix Anal. Appl., Vol. 22, Number 4, pp. 1126-1135, 2001.

[4] Golub, G. H. and C. F. Van Loan, Matrix Computation, Johns Hopkins University Press, 1983, p. 384.

[5] Moler, C. B. and C. F. Van Loan, "Nineteen Dubious Ways to Compute the Exponential of a Matrix," SIAM Review 20, 1978, pp. 801-836.