本文簡要介紹 python 語言中 scipy.sparse.linalg.expm_multiply
的用法。
用法:
scipy.sparse.linalg.expm_multiply(A, B, start=None, stop=None, num=None, endpoint=None, traceA=None)#
計算 A 的矩陣 index 對 B 的作用。
- A: 轉座線性算子
對其 index 感興趣的運算符。
- B: ndarray
要乘以 A 的矩陣 index 的矩陣或向量。
- start: 標量,可選
序列的開始時間點。
- stop: 標量,可選
序列的結束時間點,除非端點設置為假。在這種情況下,序列由除了最後一個之外的所有
num + 1
均勻分布的時間點,因此停止被排除在外。請注意,步長變化時端點為假。- num: 整數,可選
要使用的時間點數。
- endpoint: 布爾型,可選
如果為 True,則停止是最後一個時間點。否則,不包括在內。
- traceA: 標量,可選
A 的跡。如果未給出,則估計線性算子的跡,或精確計算稀疏矩陣的跡。它用於預處理 A,因此近似跡是可以接受的。對於線性算子,應提供traceA以確保性能,因為不能保證估計在所有情況下都是可靠的。
- expm_A_B: ndarray
操作 的結果。
- UserWarning
如果A是一個線性算子並且
traceA=None
(默認)。
參數 ::
返回 ::
警告 ::
注意:
定義均勻間隔時間點序列的可選參數與
numpy.linspace
的參數兼容。輸出的 ndarray 形狀有點複雜,所以我在這裏解釋一下。輸出的 ndim 可以是 1、2 或 3。如果您在單個時間點計算單個向量上的 expm 動作,它將為 1。如果您在多個時間點計算向量上的 expm 動作,或者如果您在單個時間點計算矩陣上的 expm 動作,它將為 2。如果您希望在多個時間點對具有多列的矩陣執行操作,則為 3。如果請求多個時間點,則 expm_A_B[0] 將始終是 expm 在第一個時間點的動作,無論該動作是在向量還是矩陣上。
參考:
[1]Awad H. Al-Mohy 和 Nicholas J. Higham (2011) “計算矩陣 index 的作用,並應用於 index 積分器。” SIAM 科學計算雜誌,33 (2)。第 488-511 頁。 ISSN 1064-8275 http://eprints.ma.man.ac.uk/1591/
[2]Nicholas J. Higham 和 Awad H. Al-Mohy (2010) “計算矩陣函數”。數字學報,19. 159-208。 ISSN 0962-4929 http://eprints.ma.man.ac.uk/1451/
例子:
>>> import numpy as np >>> from scipy.sparse import csc_matrix >>> from scipy.sparse.linalg import expm, expm_multiply >>> A = csc_matrix([[1, 0], [0, 1]]) >>> A.toarray() array([[1, 0], [0, 1]], dtype=int64) >>> B = np.array([np.exp(-1.), np.exp(-2.)]) >>> B array([ 0.36787944, 0.13533528]) >>> expm_multiply(A, B, start=1, stop=2, num=3, endpoint=True) array([[ 1. , 0.36787944], [ 1.64872127, 0.60653066], [ 2.71828183, 1. ]]) >>> expm(A).dot(B) # Verify 1st timestep array([ 1. , 0.36787944]) >>> expm(1.5*A).dot(B) # Verify 2nd timestep array([ 1.64872127, 0.60653066]) >>> expm(2*A).dot(B) # Verify 3rd timestep array([ 2.71828183, 1. ])
相關用法
- Python SciPy linalg.expm_frechet用法及代碼示例
- Python SciPy linalg.expm_cond用法及代碼示例
- Python SciPy linalg.expm用法及代碼示例
- Python SciPy linalg.eigvalsh_tridiagonal用法及代碼示例
- Python SciPy linalg.eig_banded用法及代碼示例
- Python SciPy linalg.eigvalsh用法及代碼示例
- Python SciPy linalg.eigh_tridiagonal用法及代碼示例
- Python SciPy linalg.eig用法及代碼示例
- Python SciPy linalg.eigh用法及代碼示例
- Python SciPy linalg.eigs用法及代碼示例
- Python SciPy linalg.eigvals用法及代碼示例
- Python SciPy linalg.eigvals_banded用法及代碼示例
- Python SciPy linalg.eigsh用法及代碼示例
- Python SciPy linalg.cdf2rdf用法及代碼示例
- Python SciPy linalg.LaplacianNd用法及代碼示例
- Python SciPy linalg.solve_circulant用法及代碼示例
- Python SciPy linalg.polar用法及代碼示例
- Python SciPy linalg.clarkson_woodruff_transform用法及代碼示例
- Python SciPy linalg.rsf2csf用法及代碼示例
- Python SciPy linalg.hessenberg用法及代碼示例
- Python SciPy linalg.tril用法及代碼示例
- Python SciPy linalg.triu用法及代碼示例
- Python SciPy linalg.svd用法及代碼示例
- Python SciPy linalg.ishermitian用法及代碼示例
- Python SciPy linalg.invhilbert用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.sparse.linalg.expm_multiply。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。