matrix_power¶
计算一个或一批方阵的 n
次幂。
记 \(X\) 为一个或一批方阵,\(n\) 为幂次,则公式为:
\[Out = X ^ {n}\]
特别地,
如果
n > 0
,则返回计算n
次幂后的一个或一批矩阵。如果
n = 0
,则返回一个或一批单位矩阵。如果
n < 0
,则返回每个矩阵的逆(若矩阵可逆)的abs(n)
次幂。
参数¶
x (Tensor):输入的欲进行
n
次幂运算的一个或一批方阵,类型为 Tensor。x
的形状应为[*, M, M]
,其中*
为零或更大的批次维度,数据类型为 float32, float64。n (int):输入的幂次,类型为 int。它可以是任意整数。
name (str,可选) - 具体用法请参见 Name,一般无需设置,默认值为 None。
返回¶
Tensor,这个(或这批)矩阵 x
经过 n
次幂运算后的结果,数据类型和输入 x
的一致。
代码示例¶
>>> import paddle
>>> x = paddle.to_tensor([[1, 2, 3],
... [1, 4, 9],
... [1, 8, 27]], dtype='float64')
>>> print(paddle.linalg.matrix_power(x, 2))
Tensor(shape=[3, 3], dtype=float64, place=Place(cpu), stop_gradient=True,
[[6. , 34. , 102.],
[14. , 90. , 282.],
[36. , 250., 804.]])
>>> print(paddle.linalg.matrix_power(x, 0))
Tensor(shape=[3, 3], dtype=float64, place=Place(cpu), stop_gradient=True,
[[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
>>> print(paddle.linalg.matrix_power(x, -2))
Tensor(shape=[3, 3], dtype=float64, place=Place(cpu), stop_gradient=True,
[[ 12.91666667, -12.75000000, 2.83333333 ],
[-7.66666667 , 8. , -1.83333333 ],
[ 1.80555556 , -1.91666667 , 0.44444444 ]])