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


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

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

用法:

scipy.sparse.linalg.gcrotmk(A, b, x0=None, *, tol=1e-05, maxiter=1000, M=None, callback=None, m=20, k=None, CU=None, discard_C=False, truncate='oldest', atol=None)#

使用靈活的 GCROT(m,k) 算法求解矩陣方程。

參數

A {稀疏矩陣,ndarray,LinearOperator}

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

b ndarray

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

x0 ndarray

開始猜測解決方案。

tol, atol 浮點數,可選

收斂公差,norm(residual) <= max(tol*norm(b), atol).默認為atoltol.

警告

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

maxiter 整數,可選

最大迭代次數。即使沒有達到指定的容差,迭代也會在 maxiter 步後停止。

M {稀疏矩陣,ndarray,LinearOperator},可選

A 的預處理器。預處理器應近似於 A 的逆。gcrotmk 是 ‘flexible’ 算法,並且預處理器可能因迭代而異。有效的預處理可以顯著提高收斂速度,這意味著達到給定的容錯能力所需的迭代次數更少。

callback 函數,可選

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

m 整數,可選

每個外部迭代的內部 FGMRES 迭代數。默認值:20

k 整數,可選

內部 FGMRES 迭代之間攜帶的向量數量。根據[2],好的值在 m 左右。默認值:米

CU 元組列表,可選

元組列表(c, u),其中包含 GCROT(m,k) 算法中矩陣 C 和 U 的列。詳細信息請參見[2]。給出的列表和其中包含的向量被就地修改。如果沒有給出,則從空矩陣開始。元組中的 c 元素可以是 None ,在這種情況下,向量在開始時通過 c = A u 重新計算並進行正交化,如 [3] 中所述。

discard_C 布爾型,可選

丟棄最後的C-vectors。如果為不同的線性係統回收克雷洛夫子空間,則很有用。

truncate {‘oldest’, ‘smallest’},可選

要使用的截斷方案。丟棄:最舊的向量,或使用[1,2]中討論的方案具有最小奇異值的向量。詳細比較請參見[2]。默認值:‘oldest’

返回

x ndarray

解決辦法找到了。

info int

提供收斂信息:

  • 0:成功退出

  • >0:未達到容差收斂,迭代次數

參考

[1]

E. de Sturler,“最優 Krylov 子空間方法的截斷策略”,SIAM J. Numer。肛門。 36, 864 (1999)。

[2] (1,2,3)

J.E.希肯和 D.W. Zingg,“用於求解非對稱線性係統的 GCROT 的簡化且靈活的變體”,SIAM J. Sci。計算。 32, 172 (2010)。

[3]

M.L.帕克斯 (E. de Sturler)、G. 麥基 (G. Mackey)、D.D. Johnson, S. Maiti,“回收線性係統序列的 Krylov 子空間”,SIAM J. Sci。計算。 28, 1651 (2006)。

例子

>>> import numpy as np
>>> from scipy.sparse import csc_matrix
>>> from scipy.sparse.linalg import gcrotmk
>>> R = np.random.randn(5, 5)
>>> A = csc_matrix(R)
>>> b = np.random.randn(5)
>>> x, exit_code = gcrotmk(A, b, atol=1e-5)
>>> print(exit_code)
0
>>> np.allclose(A.dot(x), b)
True

相關用法


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