numpy.linalg.cholesky#
- linalg.cholesky(a, /, *, upper=False)[source]#
Cholesky 分解。
返回方阵
a
的下三角或上三角 Cholesky 分解,L * L.H
或U.H * U
,其中L
是下三角矩阵,U
是上三角矩阵,.H
是共轭转置运算符(如果a
是实值,则为普通转置)。a
必须是厄米特矩阵(如果所有元素都是实数,则为对称矩阵)且为正定矩阵。不执行任何检查以验证a
是否为厄米特矩阵。此外,仅使用a
的下三角或上三角和对角元素。实际上只返回L
或U
。- 参数:
- 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]])