jax.scipy.sparse.linalg.bicgstab

目录

jax.scipy.sparse.linalg.bicgstab#

jax.scipy.sparse.linalg.bicgstab(A, b, x0=None, *, tol=1e-05, atol=0.0, maxiter=None, M=None)[源代码][源代码]#

使用双共轭梯度稳定迭代法来求解 Ax = b

JAX 的 bicgstab 的数值应与 SciPy 的 bicgstab 完全匹配(在数值精度范围内),但请注意接口略有不同:您需要将线性算子 A 作为函数提供,而不是稀疏矩阵或 LinearOperator

cg 类似,bicgstab 的导数是通过另一个 bicgstab 求解的隐式微分实现的,而不是通过对求解器进行微分。只有当两个求解都收敛时,它们才是准确的。

参数:
  • A (ndarray, function, or matmul-compatible object) – 二维数组或函数,用于计算线性映射(矩阵-向量乘积)``Ax``,当以 A(x)A @ x 的形式调用时。A 可以表示任何一般的(非对称的)线性算子,并且函数必须返回与其参数具有相同结构和形状的数组。

  • b (array or tree of arrays) – 线性系统表示的单个向量的右侧。可以存储为具有任意形状的数组或Python容器的数组。

  • x0 (array or tree of arrays) – 解决方案的初始猜测。必须与 b 具有相同的结构。

  • tol (float, optional) – 收敛容差,norm(residual) <= max(tol*norm(b), atol)。我们没有实现 SciPy 的“遗留”行为,因此除非你显式地向 SciPy 的 cg 传递 atol,否则 JAX 的容差将与 SciPy 不同。

  • atol (float, optional) – 收敛容差,norm(residual) <= max(tol*norm(b), atol)。我们没有实现 SciPy 的“遗留”行为,因此除非你显式地向 SciPy 的 cg 传递 atol,否则 JAX 的容差将与 SciPy 不同。

  • maxiter (integer) – 最大迭代次数。即使未达到指定的容差,迭代也将在 maxiter 步后停止。

  • M (ndarray, function, or matmul-compatible object) – A 的预处理器。预处理器应近似 A 的逆。有效的预处理显著提高了收敛速度,这意味着达到给定误差容限所需的迭代次数更少。

返回:

  • x (数组或数组的树) – 收敛的解。结构与 b 相同。

  • info (None) – 收敛信息的占位符。未来,JAX 将在未达到收敛时报告迭代次数,类似于 SciPy。