jax.scipy.linalg.cho_solve

内容

jax.scipy.linalg.cho_solve#

jax.scipy.linalg.cho_solve(c_and_lower, b, overwrite_b=False, check_finite=True)[source]#

使用 Cholesky 分解求解线性系统

JAX 实现 scipy.linalg.cho_solve()。使用 jax.scipy.linalg.cho_factor() 的输出。

参数:
  • c_and_lower (元组[ArrayLike, 布尔值]) – (c, lower),其中 c 是一个形状为 (..., N, N) 的数组,表示矩阵的下三角或上三角 Cholesky 分解,而 lower 是一个布尔值,指定这是下三角还是上三角分解。

  • b (ArrayLike) – 线性方程组的右侧。必须具有形状 (..., N)

  • overwrite_a – JAX 未使用

  • check_finite (布尔值) – JAX 未使用

  • overwrite_b (布尔值)

返回:

形状为 (..., N) 的数组,表示线性方程组的解。

返回类型:

数组

示例

一个小的实厄米特正定矩阵

>>> x = jnp.array([[2., 1.],
...                [1., 2.]])

通过 cho_factor() 计算 Cholesky 分解,并使用它通过 cho_solve() 求解线性方程。

>>> b = jnp.array([3., 4.])
>>> cfac = jax.scipy.linalg.cho_factor(x)
>>> y = jax.scipy.linalg.cho_solve(cfac, b)
>>> y
Array([0.6666666, 1.6666666], dtype=float32)

检查结果是否一致

>>> jnp.allclose(x @ y, b)
Array(True, dtype=bool)