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]])