In this tutorial, we are going to learn how to raise a matrix to a given power in linear algebra by using the linalg.matrix_power method in Python present in the NumPy module.
The numpy.linalg.matrix_power() method is used to raise a square matrix to an integer power n.
Let us see the syntax of the function first.
Syntax of numpy.linalg.matrix_power
- a, an MxM array. Input matrix to be raised to a power.
- n, integer, the power or exponent. It can be positive, negative or zero.
- Returns: a**n. The returned matrix is of the same shape as a. If n is positive or zero, then the return type is integer. If n is negative, then the return type is float.
- Raises: LinAlgError for matrices that are not square or (for negative powers) whose inverse cannot be calculated.
Note: If the determinant of a matrix is zero, then its inverse cannot be calculated.
This function is very similar to the
numpy.power(n, p) function which takes two parameters, a number n and a power p and raises n to the power p.
Examples of numpy.linalg.matrix_power
Let’s now start with a few examples of the numpy linalg matrix power method.
Using numpy.linalg.matrix_power with positive power
import numpy as np matrix = [[2, 5], [1, 3]] # calculating the matrix power mat_power_2 = np.linalg.matrix_power(matrix, 2) mat_power_3 = np.linalg.matrix_power(matrix, 3) print("Matrix = \n", matrix, "\nMatrix power 2 = \n", mat_power_2, "\nMatrix power 3 = \n", mat_power_3)
Matrix = [[2, 5], [1, 3]] Matrix power 2 = [[ 9 25] [ 5 14]] Matrix power 3 = [[ 43 120] [ 24 67]]
Matrix raised to power 2 is calculated by multiplying the matrix by itself as follows:
The above matrix is the result of matrix power 2. Now, to calculate matrix power 3, we can multiply matrix power 2 by the given matrix. That is,
Using numpy.linalg.power() with negative power
When we pass a negative power, n, to the function, it first calculates the inverse of the matrix and then raises the inverse to the power abs(n).
For a 2×2 matrix like:
The inverse is calculated as:
import numpy as np matrix = [[2, 5], [1, 3]] # calculating the matrix power mat_power = np.linalg.matrix_power(matrix, -2) print("Matrix = \n", matrix, "\nMatrix power -2 = \n", mat_power)
Matrix = [[2, 5], [1, 3]] Matrix power -2 = [[ 14. -25.] [ -5. 9.]]
In this example,
Its inverse is calculated as follows:
Now, raise this inverse of the matrix to the power abs(-2) i.e. 2 as shown below:
Using numpy.linalg.matrix_power with 0
When zero is passed as the power to the
numpy.linalg.matrix_power function, an identity matrix of the same shape as the input matrix is returned.
import numpy as np matrix_1 = [[2, 5], [1, 3]] matrix_2 = [[4, 2, 5], [1, 8, 3], [6, 0, 2]] # calculating the matrix power mat_1_power_0 = np.linalg.matrix_power(matrix_1, 0) mat_2_power_0 = np.linalg.matrix_power(matrix_2, 0) print("Matrix 1 = \n", matrix_1, "\nMatrix 1 power 0 = \n", mat_1_power_0, "\nMatrix 2 = \n", matrix_2, "\nMatrix 2 power 0 = \n", mat_2_power_0)
Matrix 1 = [[2, 5], [1, 3]] Matrix 1 power 0 = [[1 0] [0 1]] Matrix 2 = [[4, 2, 5], [1, 8, 3], [6, 0, 2]] Matrix 2 power 0 = [[1 0 0] [0 1 0] [0 0 1]]
As matrix 1 is a 2×2 matrix, the output is a 2×2 identity matrix and similarly, the output of matrix 2 raised to 0 is a 3×3 identity matrix.
So, in this tutorial, we learned about
numpy.linalg.matrix_power function which is used in linear algebra to compute the power of a square matrix. We also saw various examples of the possible inputs and outputs.
If you want to learn more about NumPy, feel free to go through our NumPy tutorials.