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


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


本文簡要介紹 python 語言中 scipy.sparse.linalg.tfqmr 的用法。

用法:

scipy.sparse.linalg.tfqmr(A, b, x0=None, *, tol=1e-05, maxiter=None, M=None, callback=None, atol=None, show=False)#

使用 Transpose-Free Quasi-Minimal 殘差迭代求解 Ax = b

參數

A {稀疏矩陣,ndarray,LinearOperator}

線性係統的實數或複數N-by-N矩陣。或者,A可以是一個線性算子,可以產生Ax使用,例如,scipy.sparse.linalg.LinearOperator.

b {ndarray}

線性係統的右手邊。具有形狀 (N,) 或 (N,1)。

x0 {ndarray}

開始猜測解決方案。

tol, atol 浮點數,可選

收斂公差,norm(residual) <= max(tol*norm(b-Ax0), atol).默認為tol是1.0e-5。默認為環礁tol * norm(b-Ax0).

警告

atol 的默認值將在未來版本中更改。為了將來的兼容性,請明確指定 atol。

maxiter 整數,可選

最大迭代次數。即使沒有達到指定的容差,迭代也會在 maxiter 步後停止。默認為 min(10000, ndofs * 10) ,其中 ndofs = A.shape[0]

M {稀疏矩陣,ndarray,LinearOperator}

A 的預條件子的逆。M 應該近似於 A 的逆並且易於求解(見注釋)。有效的預處理顯著提高了收斂速度,這意味著需要更少的迭代來達到給定的誤差容限。默認情況下,不使用前置條件。

callback 函數,可選

每次迭代後調用的用戶提供的函數。它被稱為 callback(xk),其中 xk 是當前解向量。

show 布爾型,可選

指定show = True來顯示收斂性,show = False就是關閉收斂的輸出。默認為False.

返回

x ndarray

融合解決方案。

info int

提供收斂信息:

  • 0 : successful exit

  • >0 : convergence to tolerance not achieved, number of iterations

  • <0 : illegal input or breakdown

注意

Transpose-Free QMR 算法源自 CGS 算法。然而,與 CGS 不同,TFQMR 方法的收斂曲線是通過計算殘差範數的準最小化來平滑的。該實現支持左預處理器,並且在收斂標準中計算的 “residual norm” 實際上是實際殘差範數的上限 ||b - Axk||

參考

[1]

R. W. Freund,A Transpose-Free Quasi-Minimal 非厄米線性係統的殘差算法,SIAM J. Sci。計算機,14(2),470-482,1993。

[2]

Y. Saad,稀疏線性係統的迭代方法,第 2 版,SIAM,費城,2003 年。

[3]

C. T. Kelley,線性和非線性方程的迭代方法,應用數學前沿第 16 號,SIAM,費城,1995 年。

例子

>>> import numpy as np
>>> from scipy.sparse import csc_matrix
>>> from scipy.sparse.linalg import tfqmr
>>> A = csc_matrix([[3, 2, 0], [1, -1, 0], [0, 5, 1]], dtype=float)
>>> b = np.array([2, 4, -1], dtype=float)
>>> x, exitCode = tfqmr(A, b)
>>> print(exitCode)            # 0 indicates successful convergence
0
>>> np.allclose(A.dot(x), b)
True

相關用法


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