Функция linalg.matrix_power
Функция linalg.matrix_power вычисляет степень квадратной матрицы.
Первый параметр - квадратная матрица для возведения в степень.
Второй параметр - целое число, показатель степени.
Функция возвращает новую матрицу, являющуюся результатом возведения в степень.
Для положительных степеней матрица последовательно умножается сама на себя.
Для нулевой степени возвращается единичная матрица того же размера.
Для отрицательных степеней матрица сначала обращается, затем возводится в положительную степень.
Синтаксис
np.linalg.matrix_power(a, n)
Пример
Возведём квадратную матрицу во вторую степень:
import numpy as np
arr = np.array([[1, 2], [3, 4]])
res = np.linalg.matrix_power(arr, 2)
print(res)
Результат выполнения кода:
[[ 7 10]
[15 22]]
Пример
Возведём матрицу в нулевую степень:
import numpy as np
arr = np.array([[1, 2], [3, 4]])
res = np.linalg.matrix_power(arr, 0)
print(res)
Результат выполнения кода:
[[1 0]
[0 1]]
Пример
Возведём матрицу в отрицательную степень (эквивалентно обращению матрицы):
import numpy as np
arr = np.array([[1, 2], [3, 4]])
res = np.linalg.matrix_power(arr, -1)
print(res)
Результат выполнения кода:
[[-2. 1. ]
[ 1.5 -0.5]]
Пример
Выполним последовательное возведение матрицы в степени от -2 до 2 и сравним результаты:
import numpy as np
arr = np.array([[2, 1], [1, 2]])
for n in (-2, -1, 0, 1, 2):
res = np.linalg.matrix_power(arr, n)
print(f"n = {n}:\n{res}\n")
Результат выполнения кода:
n = -2:
[[ 0.55555556 -0.22222222]
[-0.22222222 0.55555556]]
n = -1:
[[ 0.66666667 -0.33333333]
[-0.33333333 0.66666667]]
n = 0:
[[1 0]
[0 1]]
n = 1:
[[2 1]
[1 2]]
n = 2:
[[5 4]
[4 5]]
Пример
Попытка возведения в отрицательную степень сингулярной матрицы (необратимой) вызывает ошибку:
import numpy as np
arr = np.array([[1, 2], [2, 4]]) # Сингулярная матрица
try:
res = np.linalg.matrix_power(arr, -1)
except np.linalg.LinAlgError as e:
print("Ошибка:", e)
Результат выполнения кода:
"Ошибка: Singular matrix"