numpy.linalg.cholesky#

linalg.cholesky(a, /, *, upper=False)[原始碼]#

Cholesky 分解。

傳回方陣 a 的下或上 Cholesky 分解,L * L.HU.H * U,其中 L 是下三角矩陣,U 是上三角矩陣,而 .H 是共軛轉置運算子(如果 a 是實值,則為普通轉置)。 a 必須是 Hermitian 矩陣(實值則為對稱矩陣)且為正定矩陣。 不會執行檢查以驗證 a 是否為 Hermitian 矩陣。 此外,僅使用 a 的下或上三角和對角線元素。 實際上僅傳回 LU

參數:
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]])