numpy.linalg.matrix_power#

linalg.matrix_power(a, n)[源代码]#

将一个方阵提升到(整数)幂 n .

对于正整数 n ,幂运算通过重复的矩阵平方和矩阵乘法来计算.如果 n == 0 ,则返回与 M 形状相同的单位矩阵.如果 n < 0 ,则计算逆矩阵,然后求 abs(n) 次方.

备注

目前不支持对象矩阵的堆叠.

参数:
a(…, M, M) 类数组

要进行“幂”运算的矩阵.

nint

指数可以是任何整数或长整数,正数,负数或零.

返回:
an(…, 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.]])