本文簡要介紹 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)
.默認為atol
是tol.警告
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
相關用法
- Python SciPy linalg.get_blas_funcs用法及代碼示例
- Python SciPy linalg.gmres用法及代碼示例
- Python SciPy linalg.get_lapack_funcs用法及代碼示例
- Python SciPy linalg.eigvalsh_tridiagonal用法及代碼示例
- 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用法及代碼示例
- Python SciPy linalg.factorized用法及代碼示例
- Python SciPy linalg.lu_factor用法及代碼示例
- Python SciPy linalg.SuperLU用法及代碼示例
- Python SciPy linalg.lsqr用法及代碼示例
- Python SciPy linalg.cho_factor用法及代碼示例
- Python SciPy linalg.fractional_matrix_power用法及代碼示例
- Python SciPy linalg.eig_banded用法及代碼示例
- Python SciPy linalg.tanhm用法及代碼示例
- Python SciPy linalg.orthogonal_procrustes用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.sparse.linalg.gcrotmk。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。