matrix_exp

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

计算方阵的矩阵指数。

\[exp(A) = \sum_{n=0}^\infty A^n/n!\]

输入的张量 x 应该是方阵,比如 (*, M, M) ,矩阵指数通过比例平方法的帕德近似计算而来。

[1] Nicholas J. Higham, The scaling and squaring method for the matrix exponential revisited.

参数

  • x (Tensor) - 输入张量,形状应该为 (*, M, M)* 表示 0 或多个维度。数据类型为: float32, float64

  • name (str,可选) - 具体用法请参见 Name,一般无需设置,默认值为 None。

返回

Tensor,与 x 的类型和形状相同。

代码示例

>>> import paddle

>>> mat_a = paddle.empty((2, 2, 2))
>>> mat_a[0, :, :] = paddle.eye(2, 2)
>>> mat_a[1, :, :] = 2 * paddle.eye(2, 2)
>>> print(mat_a)
Tensor(shape=[2, 2, 2], dtype=float32, place=Place(cpu), stop_gradient=True,
[[[1., 0.],
  [0., 1.]],
 [[2., 0.],
  [0., 2.]]])

>>> out = paddle.linalg.matrix_exp(mat_a)
>>> print(out)
Tensor(shape=[2, 2, 2], dtype=float32, place=Place(cpu), stop_gradient=True,
[[[2.71828198, 0.        ],
  [0.        , 2.71828198]],
 [[7.38905621, 0.        ],
  [0.        , 7.38905621]]])

>>> import math
>>> mat_a = paddle.to_tensor([[0, math.pi/3], [-math.pi/3, 0]])
>>> out = paddle.linalg.matrix_exp(mat_a)
>>> print(out)
Tensor(shape=[2, 2], dtype=float32, place=Place(cpu), stop_gradient=True,
[[ 0.49999994,  0.86602545],
 [-0.86602551,  0.50000000]])