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乘N矩阵。或者, A 可以是线性运算符,它可以产生 Ax 使用,例如, scipy.sparse.linalg.LinearOperator

bndarray

线性系统的右侧。具有形状(N,)或(N,1)。

x0ndarray

开始猜测解决方案。

TOL,ATOL浮动,可选

收敛容差, norm(residual) <= max(tol*norm(b), atol) 。的默认设置 atoltol

警告

的默认值 atol 将在将来的版本中进行更改。为了将来的兼容性,请指定 atol 明确地说。

maxiter整型,可选

最大迭代次数。即使未达到指定的公差,迭代也将在最大步长后停止。

M{稀疏矩阵,ndarray,LinearOperator},可选

A的预处理器。预处理器应该近似于A的逆。gcrotmk是一种“灵活的”算法,并且预条件器可以随迭代而变化。有效的预处理极大地提高了收敛速度,这意味着需要更少的迭代来达到给定的误差容限。

callback函数,可选

每次迭代后要调用的用户提供的函数。它被称为回调(Xk),其中xk是当前的解向量。

m整型,可选

每个外部迭代的内部FGMRES迭代数。默认值:20

k整型,可选

内部FGMRES迭代之间要携带的向量数。根据 [2], 好值在m左右,默认值:m

CU元组列表,可选

元组列表 (c, u) 其包含GCROT(m,k)算法中的矩阵C和U的列。有关详细信息,请参阅 [2]. 给定的列表和其中包含的向量将被就地修改。如果没有给出,则从空矩阵开始。这个 c 元组中的元素可以是 None ,在这种情况下,通过以下方式重新计算向量 c = A u 开始时,并按中所述正交化 [3].

discard_C布尔值,可选

丢弃末尾的C向量。如果为不同的线性系统回收Krylov子空间,则非常有用。

truncate{‘最旧’,‘最小’},可选

要使用的截断方案。DROP:使用中讨论的方案的最旧矢量或奇异值最小的矢量 [1,2]. See [2] 进行详细的比较。默认值:‘最旧的’

退货
xndarray

找到了解决方案。

info集成

提供融合信息:

  • 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.Mackey,D.D.Johnson,S.Maiti,“为线性系统序列回收Krylov子空间”,SIAM J.Sci.电脑。28,1651(2006)。