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。