scipy.sparse.linalg.qmr¶
- scipy.sparse.linalg.qmr(A, b, x0=None, tol=1e-05, maxiter=None, M1=None, M2=None, callback=None, atol=None)¶
用拟最小残差迭代法求解
Ax = b
。- 参数
- A{稀疏矩阵,ndarray,LinearOperator}
线性系统的实值N乘N矩阵。或者,
A
可以是线性运算符,它可以产生Ax
和A^T x
使用,例如,scipy.sparse.linalg.LinearOperator
。- bndarray
线性系统的右侧。具有形状(N,)或(N,1)。
- 退货
- xndarray
收敛的解。
- info整数
- 提供融合信息:
0:成功退出>0:未达到容差收敛,迭代次数<0:非法输入或故障
- 其他参数
- x0ndarray
开始猜测解决方案。
- TOL,ATOL浮动,可选
收敛容差,
norm(residual) <= max(tol*norm(b), atol)
。的默认设置atol
是'legacy'
,它模拟不同的传统行为。警告
的默认值 atol 将在将来的版本中进行更改。为了将来的兼容性,请指定 atol 明确地说。
- maxiter整数
最大迭代次数。即使未达到指定的公差,迭代也将在最大步长后停止。
- M1{稀疏矩阵,ndarray,LinearOperator}
A的左预处理器。
- M2{稀疏矩阵,ndarray,LinearOperator}
A的右预处理剂与左预处理剂M1一起使用。矩阵M1 A M2应该比单独的A有更好的条件。
- callback功能
每次迭代后要调用的用户提供的函数。它被称为回调(Xk),其中xk是当前的解向量。
示例
>>> from scipy.sparse import csc_matrix >>> from scipy.sparse.linalg import qmr >>> A = csc_matrix([[3, 2, 0], [1, -1, 0], [0, 5, 1]], dtype=float) >>> b = np.array([2, 4, -1], dtype=float) >>> x, exitCode = qmr(A, b) >>> print(exitCode) # 0 indicates successful convergence 0 >>> np.allclose(A.dot(x), b) True