jax.scipy.sparse.linalg.bicgstab#

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

使用雙共軛梯度穩定 (Bi-Conjugate Gradient Stable) 迭代法求解 Ax = b

JAX 的 bicgstab 數值應與 SciPy 的 bicgstab 完全一致 (在數值精度範圍內),但請注意介面略有不同:您需要將線性算子 A 作為函式提供,而不是稀疏矩陣或 LinearOperator

cg 相同,bicgstab 的導數是透過隱式微分和另一個 bicgstab 求解來實作的,而不是透過求解器進行微分。只有在兩個求解都收斂時,它們才會準確。

參數:
  • A (ndarray函式相容於 matmul 的物件) – 2D 陣列或函式,用於計算線性映射 (矩陣向量乘積) Ax,當像 A(x)A @ x 這樣呼叫時。A 可以表示任何一般 (非對稱) 線性算子,且函式必須傳回與其引數具有相同結構和形狀的陣列。

  • b (陣列陣列樹) – 線性系統的右側,表示單一向量。可以儲存為陣列或任何形狀的陣列 Python 容器。

  • x0 (陣列陣列樹) – 解的起始猜測值。必須與 b 具有相同的結構。

  • tol (float選用) – 收斂容差,norm(residual) <= max(tol*norm(b), atol)。我們未實作 SciPy 的「舊版」行為,因此除非您明確將 atol 傳遞給 SciPy 的 cg,否則 JAX 的容差會與 SciPy 不同。

  • atol (float選用) – 收斂容差,norm(residual) <= max(tol*norm(b), atol)。我們未實作 SciPy 的「舊版」行為,因此除非您明確將 atol 傳遞給 SciPy 的 cg,否則 JAX 的容差會與 SciPy 不同。

  • maxiter (integer) – 最大迭代次數。即使未達到指定的容差,迭代也會在 maxiter 步驟後停止。

  • M (ndarray函式相容於 matmul 的物件) – A 的預處理器。預處理器應近似於 A 的反矩陣。有效的預處理可以顯著提高收斂速度,這表示達到給定的誤差容差所需的迭代次數更少。

傳回:

  • x (陣列或陣列樹) – 收斂解。與 b 具有相同的結構。

  • info (None) – 收斂資訊的佔位符。未來,JAX 將報告未達成收斂時的迭代次數,如同 SciPy。