numpy.linalg.matrix_power#

linalg.matrix_power(a, n)[источник]#

Возведение квадратной матрицы в (целую) степень n.

Для положительных целых чисел n, степень вычисляется повторным возведением матрицы в квадрат и умножением матриц. Если n == 0, единичная матрица той же формы, что и M, возвращается. Если n < 0, обратная матрица вычисляется, а затем возводится в abs(n).

Примечание

Стеки матриц объектов в настоящее время не поддерживаются.

Параметры:
a(…, M, M) array_like

Матрица для возведения в степень.

nint

Показатель степени может быть любым целым или длинным целым числом, положительным, отрицательным или нулевым.

Возвращает:
a**n(…, M, M) ndarray или объект matrix

Возвращаемое значение имеет ту же форму и тип, что и M; если показатель степени положительный или нулевой, то тип элементов совпадает с типом M. Если показатель степени отрицательный, элементы являются числами с плавающей запятой.

Вызывает:
LinAlgError

Для матриц, которые не являются квадратными или которые (для отрицательных степеней) не могут быть инвертированы численно.

Примеры

>>> import numpy as np
>>> from numpy.linalg import matrix_power
>>> i = np.array([[0, 1], [-1, 0]]) # matrix equiv. of the imaginary unit
>>> matrix_power(i, 3) # should = -i
array([[ 0, -1],
       [ 1,  0]])
>>> matrix_power(i, 0)
array([[1, 0],
       [0, 1]])
>>> matrix_power(i, -3) # should = 1/(-i) = i, but w/ f.p. elements
array([[ 0.,  1.],
       [-1.,  0.]])

Более сложный пример

>>> q = np.zeros((4, 4))
>>> q[0:2, 0:2] = -i
>>> q[2:4, 2:4] = i
>>> q # one of the three quaternion units not equal to 1
array([[ 0., -1.,  0.,  0.],
       [ 1.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  1.],
       [ 0.,  0., -1.,  0.]])
>>> matrix_power(q, 2) # = -np.eye(4)
array([[-1.,  0.,  0.,  0.],
       [ 0., -1.,  0.,  0.],
       [ 0.,  0., -1.,  0.],
       [ 0.,  0.,  0., -1.]])