numpy.linalg.cholesky#
- linalg.cholesky(a, /, *, upper=False)[源代码]#
- Cholesky 分解。 - 返回方阵 - a的下三角或上三角 Cholesky 分解,即- L * L.H或- U.H * U,其中- L是下三角矩阵,- U是上三角矩阵,- .H是共轭转置运算符(如果- a是实值,则为普通转置)。- a必须是 Hermitian(如果为实值则对称)且正定。不执行检查以验证- a是否为 Hermitian。此外,仅使用- a的下三角或上三角以及对角线元素。实际只返回- L或- U。- 参数:
- a(…, M, M) array_like
- Hermitian(如果所有元素为实数则对称)正定输入矩阵。 
- 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 分解带状 Hermitian 正定矩阵。 
- scipy.linalg.cho_factor
- 矩阵的 Cholesky 分解,用于 - scipy.linalg.cho_solve。
 - 说明 - 适用广播规则,详见 - numpy.linalg文档。- Cholesky 分解常用于快速求解 \[A \mathbf{x} = \mathbf{b}\]- (当 A 既是 Hermitian/对称又是正定矩阵时)。 - 首先,我们求解 \(\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]])