scipy.sparse.linalg.bicg

scipy.sparse.linalg.bicg(A, b, x0=None, tol=1e-05, maxiter=None, M=None, callback=None, atol=None)

用BI型共轭梯度迭代法求解 Ax = b

参数
A{稀疏矩阵,ndarray,LinearOperator}

线性系统的实数或复数的N乘N矩阵。或者, A 可以是线性运算符,它可以产生 AxA^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整数

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

M{稀疏矩阵,ndarray,LinearOperator}

A的预条件。预条件应该近似于A的逆。有效的预处理显著地提高了收敛速度,这意味着达到给定的误差容限所需的迭代次数更少。

callback功能

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

示例

>>> from scipy.sparse import csc_matrix
>>> from scipy.sparse.linalg import bicg
>>> A = csc_matrix([[3, 2, 0], [1, -1, 0], [0, 5, 1]], dtype=float)
>>> b = np.array([2, 4, -1], dtype=float)
>>> x, exitCode = bicg(A, b)
>>> print(exitCode)            # 0 indicates successful convergence
0
>>> np.allclose(A.dot(x), b)
True