scipy.sparse.linalg.minres¶
- scipy.sparse.linalg.minres(A, b, x0=None, shift=0.0, tol=1e-05, maxiter=None, M=None, callback=None, show=False, check=False)[源代码]¶
用最小残差迭代法求解Ax=b
MinRes最小化实对称矩阵A的范数(A*x-b)。与共轭梯度法不同,A可以是不定的,也可以是奇异的。
如果Shift!=0,则该方法求解(A-Shift*i)x=b
- 参数
- A{稀疏矩阵,ndarray,LinearOperator}
线性系统的实对称N乘N矩阵交替,
A
可以是线性运算符,它可以产生Ax
使用,例如,scipy.sparse.linalg.LinearOperator
。- bndarray
线性系统的右侧。具有形状(N,)或(N,1)。
- 退货
- xndarray
收敛的解。
- info整数
- 提供融合信息:
0:成功退出>0:未达到容差收敛,迭代次数<0:非法输入或故障
- 其他参数
- x0ndarray
开始猜测解决方案。
- tol浮动
要做到宽容。当相对残差低于时,算法终止 tol 。
- maxiter整数
最大迭代次数。即使未达到指定的公差,迭代也将在最大步长后停止。
- M{稀疏矩阵,ndarray,LinearOperator}
A的预条件。预条件应该近似于A的逆。有效的预处理显著地提高了收敛速度,这意味着达到给定的误差容限所需的迭代次数更少。
- callback功能
每次迭代后要调用的用户提供的函数。它被称为回调(Xk),其中xk是当前的解向量。
参考文献
- 稀疏不定线性方程组的求解
首页--期刊主要分类--期刊细介绍--期刊题录与文摘--期刊详细文摘内容肛门。12(4),第617-629页。https://web.stanford.edu/group/SOL/software/minres/
- 此文件是以下MATLAB实现的翻译版本:
https://web.stanford.edu/group/SOL/software/minres/minres-matlab.zip
示例
>>> import numpy as np >>> from scipy.sparse import csc_matrix >>> from scipy.sparse.linalg import minres >>> A = csc_matrix([[3, 2, 0], [1, -1, 0], [0, 5, 1]], dtype=float) >>> A = A + A.T >>> b = np.array([2, 4, -1], dtype=float) >>> x, exitCode = minres(A, b) >>> print(exitCode) # 0 indicates successful convergence 0 >>> np.allclose(A.dot(x), b) True