SciPy - logm() Function



To find the matrix logarithm of a square matrix , we use the scipy.linalg.logm function. Since the matrix logarithm is the inverse of the matrix exponential

exp(B) = A if B=logm(A)

In contrast to the natural logarithm for scalars, the matrix logarithm handles the non-commutative characteristics of matrices by using eigenvalue decomposition or other numerical methods.

For invertible matrices with eigenvalues devoid of non-positive real components, the matrix logarithm is defined.

The result satisfies exp(logm(A))=A, but the computation may be inaccurate if A is poorly conditioned or has eigenvalues close to the branch cut of the logarithm.

Syntax

Following is the syntax of the SciPy logm() method

.logm(A, disp=True)

Parameters

This method accepts the following parameters −

  • A − A sqaure matrix for which the matrix logarithm is to be computed.

  • disp − It issues warnings if the result might be inaccurate, if True and returns a second value with an error estimate instead of printing warnings, if False.

Return Value

The logm() returns a logA(ndarray), where it represents the matrix logarithm of A and returned only if disp=False, provides the 1-norm of the relative error in the result.

Example 1

This is the basic example of logm() method demonstrates the basic logarithm of a identity matrix.

In this example, we use logm() to confirm that the logarithm of simple matrices behaves as expected.

from scipy.linalg import logm
import numpy as np

A = np.eye(2)  # Identity matrix
log_A = logm(A)
print(log_A)         

When we run above program, it produces following result

[[0. 0.]
 [0. 0.]]
The logarithm of the identity matrix is a zero matrix.

Example 2:Logarithm of a Diagonal Matrix

This example demonstrates the use of the matrix exponential to solve a diagonal matrix.

In this example, we use logm()because it simplifies the computation by directly handling the diagonal structure of A.

import numpy as np
from scipy.linalg import logm

A = np.array([[2, 0], 
              [0, 3]])
log_A = logm(A)
print(log_A)  

When we run above program, it produces following result

[[0.69314718 0.        ]
 [0.         1.09861229]]

The logarithm of a diagonal matrix is the logarithm of each diagonal entry.

Example 3: Logarithm of a General Matrix

This example demonstrates the utility of logm() in handling complex cases beyond simple structures.

import numpy as np
from scipy.linalg import logm

A = np.array([[1, 2],
              [0, 3]])
log_A = logm(A)
print(log_A)

Following is an output of the above code

[[ 0.         1.15443133]
 [ 0.          1.09861229]]

The approach produces a non-diagonal result after computing the logarithm for non-diagonal matrices.

scipy_linalg.htm
Advertisements