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


Python SciPy linalg.cg用法及代码示例


本文简要介绍 python 语言中 scipy.sparse.linalg.cg 的用法。

用法:

scipy.sparse.linalg.cg(A, b, x0=None, *, tol=<object object>, maxiter=None, M=None, callback=None, atol=0.0, rtol=1e-05)#

使用共轭梯度迭代求解 Ax = b

参数

A {稀疏矩阵,ndarray,LinearOperator}

线性系统的实数或复数N-by-N 矩阵。 A 必须表示厄米特正定矩阵。或者,A 可以是一个线性运算符,它可以使用例如 scipy.sparse.linalg.LinearOperator 生成 Ax

b ndarray

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

x0 ndarray

开始猜测解决方案。

rtol, atol 浮点数,可选

收敛测试的参数。为了收敛,应满足norm(b - A @ x) <= max(rtol*norm(b), atol)。默认为 atol=0.rtol=1e-5

maxiter 整数

最大迭代次数。即使没有达到指定的容差,迭代也会在 maxiter 步后停止。

M {稀疏矩阵,ndarray,LinearOperator}

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

callback 函数

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

tol 浮点数,可选,已弃用

返回

x ndarray

融合解决方案。

info 整数
提供收敛信息:

0:成功退出 >0:未达到容差收敛,迭代次数

例子

>>> import numpy as np
>>> from scipy.sparse import csc_matrix
>>> from scipy.sparse.linalg import cg
>>> P = np.array([[4, 0, 1, 0],
...               [0, 5, 0, 0],
...               [1, 0, 3, 2],
...               [0, 0, 2, 4]])
>>> A = csc_matrix(P)
>>> b = np.array([-1, -0.5, -1, 2])
>>> x, exit_code = cg(A, b, atol=1e-5)
>>> print(exit_code)    # 0 indicates successful convergence
0
>>> np.allclose(A.dot(x), b)
True

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.sparse.linalg.cg。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。