NumPy - Determinant Calculation



What is a Matrix Determinant?

A matrix determinant is a special number that can be calculated from a square matrix. It provides important information about the matrix, such as whether the matrix is invertible.

The determinant of a matrix is a single number, not a matrix, and it can be used to solve systems of linear equations, find eigenvalues, and more.

For example, the determinant of a 2x2 matrix A is calculated as follows −

A = [[a, b],
         [c, d]]
Det(A) = ad - bc

For larger matrices, the determinant is calculated recursively using a process called cofactor expansion.

Determinant Calculation in NumPy

NumPy provides the numpy.linalg.det() function to compute the determinant of a matrix. Let us see how this function works with an example of a 2x2 matrix.

Example

In the following example, the determinant of the matrix A is computed using the numpy.linalg.det() function −

import numpy as np

# Define a 2x2 matrix
A = np.array([[1, 2], [3, 4]])

# Compute the determinant of the matrix
det_A = np.linalg.det(A)
print(det_A)

Following is the output obtained −

-2.0000000000000004

Determinant of a 3x3 Matrix

The determinant of a 3x3 matrix is calculated using a more complex formula that involves minors and cofactors. Following is an example of calculating the determinant of a 3x3 matrix using NumPy −

import numpy as np

# Define a 3x3 matrix
B = np.array([[6, 1, 1], 
              [4, -2, 5], 
              [2, 8, 7]])

# Compute the determinant of the matrix
det_B = np.linalg.det(B)
print(det_B)

This will produce the following result −

-306.0

Properties of Determinants

Determinants have several important properties. They are as follows −

  • Multiplicative Property: The determinant of the product of two matrices is equal to the product of their determinants: det(AB) = det(A) . det(B).
  • Transpose Property: The determinant of a matrix is equal to the determinant of its transpose: det(A) = det(AT).
  • Inverse Property: The determinant of the inverse of a matrix is the reciprocal of the determinant: det(A-1) = 1 / det(A).
  • Row Operations: Swapping two rows of a matrix multiplies its determinant by -1, scaling a row by a constant multiplies the determinant by that constant, and adding a multiple of one row to another does not change the determinant.

Conditions for a Non-Zero Determinant

For a matrix to have a non-zero determinant, it must meet the following conditions −

  • Square Matrix: The matrix must have the same number of rows and columns.
  • Full Rank: The matrix must have full rank, meaning all its rows (or columns) are linearly independent.

Using Determinants in Linear Equations

Determinants are used to solve systems of linear equations using Cramer's Rule. If we have a system of equations represented by AX = B, where A is the coefficient matrix, X is the vector of unknowns, and B is the constant vector, we can solve for X if det(A) 0

import numpy as np

# Coefficient matrix
A = np.array([[2, 1], [5, 7]])

# Constant vector
B = np.array([11, 13])

# Solve for X using Cramer's Rule
det_A = np.linalg.det(A)
A1 = np.array([[11, 1], [13, 7]])
A2 = np.array([[2, 11], [5, 13]])

X1 = np.linalg.det(A1) / det_A
X2 = np.linalg.det(A2) / det_A

X = np.array([X1, X2])
print(X)

Following is the output of the above code −

[ 7.11111111 -3.22222222]

Practical Applications of Determinants

Determinants have many practical applications, such as −

  • Solving Systems of Linear Equations: Determinants are used in Cramer's Rule to solve systems of linear equations.
  • Finding Eigenvalues: Determinants are used to find the eigenvalues of a matrix.
  • Area and Volume Calculation: Determinants can be used to calculate the area of parallelograms and the volume of parallelepipeds in higher dimensions.
  • Change of Variables in Integrals: In multivariable calculus, the determinant of the Jacobian matrix is used in the change of variables formula for integrals.

Handling Non-Invertible Matrices

If a matrix has a determinant of zero, it is called singular and does not have an inverse. Attempting to compute the inverse of a singular matrix will result in an error. Here is how we can handle such scenarios using NumPy −

import numpy as np

def calculate_determinant(matrix):
   try:
      return np.linalg.det(matrix)
   except np.linalg.LinAlgError:
      return "Matrix is singular and has no determinant."

# Singular matrix
C = np.array([[1, 2], [2, 4]])

# Attempt to compute the determinant
result = calculate_determinant(C)
print(result)

Following is the output obtained −

0.0
Advertisements