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.]])