numpy.linalg.cholesky#

linalg.cholesky(a, /, *, upper=False)[source]#

Cholesky 分解。

返回方阵 a 的下三角或上三角 Cholesky 分解,L * L.HU.H * U,其中 L 是下三角矩阵,U 是上三角矩阵,.H 是共轭转置运算符(如果 a 是实值,则为普通转置)。a 必须是厄米特矩阵(如果所有元素都是实数,则为对称矩阵)且为正定矩阵。不执行任何检查以验证 a 是否为厄米特矩阵。此外,仅使用 a 的下三角或上三角和对角元素。实际上只返回 LU

参数:
a(…, M, M) array_like

厄米特矩阵(如果所有元素都是实数,则为对称矩阵),正定输入矩阵。

upperbool

如果为 True,则结果必须是上三角 Cholesky 因子。如果为 False,则结果必须是下三角 Cholesky 因子。默认值:False

返回值:
L(…, M, M) array_like

a 的下三角或上三角 Cholesky 因子。如果 a 是矩阵对象,则返回矩阵对象。

引发:
LinAlgError

如果分解失败,例如,如果 a 不是正定矩阵。

另请参阅

scipy.linalg.cholesky

SciPy 中的类似函数。

scipy.linalg.cholesky_banded

Cholesky 分解带状厄米特正定矩阵。

scipy.linalg.cho_factor

矩阵的 Cholesky 分解,用于 scipy.linalg.cho_solve 中。

备注

1.8.0 版新增。

广播规则适用,有关详细信息,请参阅 numpy.linalg 文档。

Cholesky 分解通常用作快速求解

\[A \mathbf{x} = \mathbf{b}\]

(当 A 既是厄米特/对称矩阵又是正定矩阵时)的方法。

首先,我们求解 \(\mathbf{y}\) 的解

\[L \mathbf{y} = \mathbf{b},\]

然后求解 \(\mathbf{x}\) 的解

\[L^{H} \mathbf{x} = \mathbf{y}.\]

示例

>>> import numpy as np
>>> A = np.array([[1,-2j],[2j,5]])
>>> A
array([[ 1.+0.j, -0.-2.j],
       [ 0.+2.j,  5.+0.j]])
>>> L = np.linalg.cholesky(A)
>>> L
array([[1.+0.j, 0.+0.j],
       [0.+2.j, 1.+0.j]])
>>> np.dot(L, L.T.conj()) # verify that L * L.H = A
array([[1.+0.j, 0.-2.j],
       [0.+2.j, 5.+0.j]])
>>> A = [[1,-2j],[2j,5]] # what happens if A is only array_like?
>>> np.linalg.cholesky(A) # an ndarray object is returned
array([[1.+0.j, 0.+0.j],
       [0.+2.j, 1.+0.j]])
>>> # But a matrix object is returned if A is a matrix object
>>> np.linalg.cholesky(np.matrix(A))
matrix([[ 1.+0.j,  0.+0.j],
        [ 0.+2.j,  1.+0.j]])
>>> # The upper-triangular Cholesky factor can also be obtained.
>>> np.linalg.cholesky(A, upper=True)
array([[1.-0.j, 0.-2.j],
       [0.-0.j, 1.-0.j]])