DEV Community

Cover image for Determinant of a Matrix
Shlok Kumar
Shlok Kumar Subscriber

Posted on

Determinant of a Matrix

The determinant of a matrix is a special value that applies only to square matrices (those with the same number of rows and columns). Understanding determinants is vital in various fields such as calculus and linear algebra, as they help solve systems of linear equations and find the inverses of matrices. In this blog post, we’ll explore how to calculate the determinant of a matrix, with practical implementations in Python.

What is a Determinant?

The determinant is a scalar value that provides insight into various properties of a matrix. For instance, it can indicate whether a matrix is invertible (a non-zero determinant means it is invertible) and is used in calculating the area or volume of geometric shapes represented by the matrix.

Determinant of a 2x2 Matrix

For a 2x2 matrix:

| a b | | c d | 
Enter fullscreen mode Exit fullscreen mode

The determinant can be calculated as:

det = ad - bc 
Enter fullscreen mode Exit fullscreen mode

Determinant of a 3x3 Matrix

For a 3x3 matrix:

| a b c | | d e f | | g h i | 
Enter fullscreen mode Exit fullscreen mode

The determinant is calculated as:

det = a(ei - fh) - b(di - fg) + c(dh - eg) 
Enter fullscreen mode Exit fullscreen mode

How to Calculate the Determinant

To calculate the determinant, follow these steps:

  1. Cofactor Expansion: For each element in the first row or column, calculate its cofactor.
  2. Multiply and Add: Multiply each element by its cofactor and add them together, applying alternate signs.
  3. Base Case: The determinant of a 1x1 matrix is simply the value of that element.

The cofactor of an element is obtained by removing its row and column from the matrix.

Implementation in Python

Method 1: Recursive Approach

Here's a Python function to find the determinant using recursion:

def getDet(mat, n): # Base case: if the matrix is 1x1  if n == 1: return mat[0][0] # Base case for 2x2 matrix  if n == 2: return mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0] # Recursive case for larger matrices  res = 0 for col in range(n): # Create a submatrix by removing the first row and the current column  sub = [[mat[i][j] for j in range(n) if j != col] for i in range(1, n)] # Cofactor expansion  sign = 1 if col % 2 == 0 else -1 res += sign * mat[0][col] * getDet(sub, n - 1) return res # Driver program to test the above function mat = [[1, 0, 2, -1], [3, 0, 0, 5], [2, 1, 4, -3], [1, 0, 5, 0]] print(getDet(mat, len(mat))) 
Enter fullscreen mode Exit fullscreen mode

Output

Determinant of the matrix is: 30 
Enter fullscreen mode Exit fullscreen mode

Method 2: Using Gaussian Elimination

Another efficient approach involves transforming the matrix into upper triangular form:

def getDet(mat): n = len(mat) det = 1 # Initialize result  for i in range(n): # Find a row with a non-zero element  for j in range(i, n): if mat[j][i] != 0: if j != i: # Swap rows  mat[i], mat[j] = mat[j], mat[i] det *= -1 # Change sign on row swap  break else: return 0 # Determinant is zero  # Eliminate elements below the pivot  for j in range(i + 1, n): factor = mat[j][i] / mat[i][i] for k in range(i, n): mat[j][k] -= factor * mat[i][k] # Multiply diagonal elements to get determinant  for i in range(n): det *= mat[i][i] return int(det) # Driver code mat = [[1, 0, 2, -1], [3, 0, 0, 5], [2, 1, 4, -3], [1, 0, 5, 0]] print(getDet(mat)) 
Enter fullscreen mode Exit fullscreen mode

Output

Determinant of the matrix is: 30 
Enter fullscreen mode Exit fullscreen mode

Method 3: Using NumPy

For those looking for a quick solution, the NumPy library provides a built-in function to calculate the determinant:

import numpy as np def determinant(mat): return round(np.linalg.det(mat)) # Driver Code mat = [[1, 0, 2, -1], [3, 0, 0, 5], [2, 1, 4, -3], [1, 0, 5, 0]] print('Determinant of the matrix is:', determinant(mat)) 
Enter fullscreen mode Exit fullscreen mode

Output

Determinant of the matrix is: 30 
Enter fullscreen mode Exit fullscreen mode

Conclusion

Understanding how to compute the determinant of a matrix is essential for various applications in linear algebra and machine learning. Whether using recursive methods, Gaussian elimination, or libraries like NumPy, you can efficiently calculate determinants and leverage them in your algorithms.

For more content, follow me at — https://linktr.ee/shlokkumar2303

Top comments (0)