当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy linalg.expm用法及代码示例


本文简要介绍 python 语言中 scipy.linalg.expm 的用法。

用法:

scipy.linalg.expm(A)#

计算数组的矩阵指数。

参数

A ndarray

最后两个维度的输入是正方形 (..., n, n)

返回

eA ndarray

所得矩阵指数具有与 A 相同的形状

注意

实现[1]中给出的算法,该算法本质上是一个 Pade 近似,其变量顺序是根据数组数据决定的。

对于大小为 n 的输入,在最坏情况下内存使用量的顺序为 8*(n**2) 。如果输入数据不是实数和复数数据类型的单精度和双精度,则将其复制到新数组。

对于 n >= 400 的情况,精确的 1-范数计算成本与 1-范数估计持平,从那时起,[2] 中给出的估计方案用于决定近似阶数。

参考

[1]

Awad H. Al-Mohy 和 Nicholas J. Higham,(2009),“一种新的矩阵指数缩放和平方算法”,SIAM J. Matrix Anal。应用。 31(3):970-989,DOI:10.1137/09074721X

[2]

Nicholas J. Higham 和 Francoise Tisseur (2000),“矩阵 1-范数估计的块算法,及其在 1-范数伪谱中的应用。” SIAM J. 矩阵肛门。应用。 21(4):1185-1201,DOI:10.1137/S0895479899356080

例子

>>> import numpy as np
>>> from scipy.linalg import expm, sinm, cosm

公式 exp(0) = 1 的矩阵版本:

>>> expm(np.zeros((3, 2, 2)))
array([[[1., 0.],
        [0., 1.]],

       [[1., 0.],
        [0., 1.]],

       [[1., 0.],
        [0., 1.]]])

欧拉恒等式 (exp(i*theta) = cos(theta) + i*sin(theta)) 应用于矩阵:

>>> a = np.array([[1.0, 2.0], [-1.0, 3.0]])
>>> expm(1j*a)
array([[ 0.42645930+1.89217551j, -2.13721484-0.97811252j],
       [ 1.06860742+0.48905626j, -1.71075555+0.91406299j]])
>>> cosm(a) + 1j*sinm(a)
array([[ 0.42645930+1.89217551j, -2.13721484-0.97811252j],
       [ 1.06860742+0.48905626j, -1.71075555+0.91406299j]])

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.linalg.expm。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。