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


Python SciPy linalg.expm_multiply用法及代碼示例


本文簡要介紹 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.        ])

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.sparse.linalg.expm_multiply。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。