当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。