jax.scipy.linalg.lu_solve#
- jax.scipy.linalg.lu_solve(lu_and_piv, b, trans=0, overwrite_b=False, check_finite=True)[源代码]#
使用 LU 分解求解线性系统
JAX 实现
scipy.linalg.lu_solve()。使用了jax.scipy.linalg.lu_factor()的输出。- 参数:
lu_and_piv (tuple[Array, ArrayLike]) –
(lu, piv),是lu_factor()的输出。lu是一个形状为(..., M, N)的数组,其下三角包含L,上三角包含U。piv是一个形状为(..., K)的数组,其中K = min(M, N),它编码了枢轴。b (ArrayLike) – 线性系统的右侧。形状必须为
(..., M)trans (int) –
要解的系统类型。选项为
0: \(A x = b\)1: \(A^Tx = b\)2: \(A^Hx = b\)
overwrite_b (bool) – JAX 未使用
check_finite (bool) – JAX 未使用
- 返回:
形状为
(..., N)的数组,表示线性系统的解。- 返回类型:
示例
通过 LU 分解求解一个小线性系统
>>> a = jnp.array([[2., 1.], ... [1., 2.]])
通过
lu_factor()计算 LU 分解,并使用它通过lu_solve()求解线性方程。>>> b = jnp.array([3., 4.]) >>> lufac = jax.scipy.linalg.lu_factor(a) >>> y = jax.scipy.linalg.lu_solve(lufac, b) >>> y Array([0.6666666, 1.6666667], dtype=float32)
检查结果是否一致
>>> jnp.allclose(a @ y, b) Array(True, dtype=bool)