numpy.linalg.matrix_power

numpy.linalg.matrix_power(a, n)

Функция linalg.matrix_power() возводит матрицу в степень указанного целого числа.

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

Данная функция может принимать многомерные массивы с двумя одинаковыми последними осями, и находить степень каждого такого подмассива отдельно, после чего она возвращает массив той же формы со степенями подмассивов по последним двум осям исходного массива.

Параметры:
a - массив NumPy или подобный массиву объект.
Входные данные.
n - целое число.
Степень в которую возводится матрица.
Возвращает:
результат - массив NumPy
Результат возведения матрицы a в степень n, с той же формой, что и a. Для n > 0 и n = 0 тип данных не преобразуется, для n < 0 тип данных всегда преобразуется к float. Если входной массив это последовательность квадратных матриц, то возвращается последовательность степеней его подмассивов.

Замечание

Если матрица не является квадратной или если матрица является вырожденной (определитель равен 0) и возводится в отрицательную степень то вызывается исключение LinAlgError.

Смотрите так же:
matmul, linalg.multi_dot, dot, vdot


Примеры

>>> import numpy as np
>>> 
>>> a = np.array([[1, 2], [3, 4]])
>>> 
>>> np.linalg.matrix_power(a, 0)
array([[1, 0],
       [0, 1]])
>>> 
>>> np.linalg.matrix_power(a, 2)
array([[ 7, 10],
       [15, 22]])
>>> 
>>> np.linalg.matrix_power(a, 3)
array([[ 37,  54],
       [ 81, 118]])
>>> 
>>> np.linalg.matrix_power(a, -3)
array([[-14.75 ,   6.75 ],
       [ 10.125,  -4.625]])
>>> 
>>> 
>>> b = np.arange(12).reshape(3, 2, 2)
>>> 
>>> np.linalg.matrix_power(b, 2)
array([[[  2,   3],
        [  6,  11]],

       [[ 46,  55],
        [ 66,  79]],

       [[154, 171],
        [190, 211]]])
>>> 
>>> np.linalg.matrix_power(b[0], 2)
array([[ 2,  3],
       [ 6, 11]])