matrix_power

paddle.linalg. matrix_power ( x, n, name=None ) [源代码]

计算一个或一批方阵的 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 ]])