當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。