scipy.linalg.
cholesky#
- scipy.linalg.cholesky(a, lower=False, overwrite_a=False, check_finite=True)[原始碼]#
計算矩陣的 Cholesky 分解。
返回 Hermitian 正定矩陣 A 的 Cholesky 分解,\(A = L L^*\) 或 \(A = U^* U\)。
- 參數:
- a(M, M) 類陣列 (array_like)
要分解的矩陣
- lowerbool,可選
是否計算上或下三角 Cholesky 因式分解。在分解過程中,僅參考矩陣的選定一半。預設為上三角。
- overwrite_abool,可選
是否覆寫 a 中的資料(可能提高效能)。
- check_finitebool,可選
是否檢查整個輸入矩陣是否僅包含有限數字。停用可能會提高效能,但如果輸入確實包含無限大或 NaN,則可能會導致問題(崩潰、無法終止)。
- 返回:
- c(M, M) ndarray
a 的上或下三角 Cholesky 因子。
- 引發:
- LinAlgError如果分解失敗。
註解
在有限性檢查期間(如果選定),將檢查整個矩陣 a。在分解期間,假設 a 是對稱或 Hermitian 矩陣(如適用),並且僅參考選項 lower 選定的一半。因此,如果 a 是非對稱/非 Hermitian 矩陣,如果由選定一半表示的對稱/Hermitian 矩陣是正定的,
cholesky
仍可能成功,但如果另一半中的元素是非有限的,則可能會失敗。範例
>>> import numpy as np >>> from scipy.linalg import cholesky >>> a = np.array([[1,-2j],[2j,5]]) >>> L = cholesky(a, lower=True) >>> L array([[ 1.+0.j, 0.+0.j], [ 0.+2.j, 1.+0.j]]) >>> L @ L.T.conj() array([[ 1.+0.j, 0.-2.j], [ 0.+2.j, 5.+0.j]])