scipy.linalg.cholesky_banded

scipy.linalg.cholesky_banded(ab, overwrite_ab=False, lower=False, check_finite=True)[源代码]

带状厄米正定矩阵的Cholesky分解

矩阵a以下对角线或上对角线排序形式存储在ab中::

ab[u + i - j, j] == a[i,j]        (if upper form; i <= j)
ab[    i - j, j] == a[i,j]        (if lower form; i >= j)

ab的示例(a的形状为(6,6),u=2)::

upper form:
*   *   a02 a13 a24 a35
*   a01 a12 a23 a34 a45
a00 a11 a22 a33 a44 a55

lower form:
a00 a11 a22 a33 a44 a55
a10 a21 a32 a43 a54 *
a20 a31 a42 a53 *   *
参数
ab(U+1,M)类阵列

带状矩阵

overwrite_ab布尔值,可选

丢弃ab中的数据(可能会增强性能)

lower布尔值,可选

是较低形式的矩阵。(默认为大写形式)

check_finite布尔值,可选

是否检查输入矩阵是否仅包含有限个数字。禁用可能会带来性能提升,但如果输入确实包含无穷大或NAN,则可能会导致问题(崩溃、非终止)。

退货
c(U+1,M)ndarray

a的Cholesky因式分解,其带状格式与ab相同

参见

cho_solve_banded

求解一个线性集合方程,给出带状厄米特的Cholesky因式分解。

示例

>>> from scipy.linalg import cholesky_banded
>>> from numpy import allclose, zeros, diag
>>> Ab = np.array([[0, 0, 1j, 2, 3j], [0, -1, -2, 3, 4], [9, 8, 7, 6, 9]])
>>> A = np.diag(Ab[0,2:], k=2) + np.diag(Ab[1,1:], k=1)
>>> A = A + A.conj().T + np.diag(Ab[2, :])
>>> c = cholesky_banded(Ab)
>>> C = np.diag(c[0, 2:], k=2) + np.diag(c[1, 1:], k=1) + np.diag(c[2, :])
>>> np.allclose(C.conj().T @ C - A, np.zeros((5, 5)))
True