scipy.linalg.
det#
- scipy.linalg.det(a, overwrite_a=False, check_finite=True)[source]#
計算矩陣的行列式
行列式是一個純量,它是相關聯的方陣係數的函數。奇異矩陣的行列式值為零。
- 參數:
- a(…, M, M) 類陣列
用於計算行列式的輸入陣列。
- overwrite_a布林值,選填
允許覆寫 a 中的資料(可能提升效能)。
- check_finite布林值,選填
是否檢查輸入矩陣是否僅包含有限數字。停用此選項可能會提高效能,但如果輸入包含無限大或 NaN,則可能會導致問題(崩潰、非終止)。
- 回傳值:
- det(…) 浮點數或複數
a 的行列式。對於堆疊陣列,將為輸入的最後兩個維度中的每個 (m, m) 切片回傳一個純量。例如,形狀為 (p, q, m, m) 的輸入將產生形狀為 (p, q) 的結果。如果所有維度都是 1,則無論 ndim 為何,都會回傳一個純量。
註解
行列式是透過使用 LAPACK 常式 'getrf' 對輸入執行 LU 分解來計算的,然後計算 U 因子對角線項目的乘積。
即使輸入陣列是單精度(float32 或 complex64),結果也將以雙精度(float64 或 complex128)回傳,以防止溢位。
範例
>>> import numpy as np >>> from scipy import linalg >>> a = np.array([[1,2,3], [4,5,6], [7,8,9]]) # A singular matrix >>> linalg.det(a) 0.0 >>> b = np.array([[0,2,3], [4,5,6], [7,8,9]]) >>> linalg.det(b) 3.0 >>> # An array with the shape (3, 2, 2, 2) >>> c = np.array([[[[1., 2.], [3., 4.]], ... [[5., 6.], [7., 8.]]], ... [[[9., 10.], [11., 12.]], ... [[13., 14.], [15., 16.]]], ... [[[17., 18.], [19., 20.]], ... [[21., 22.], [23., 24.]]]]) >>> linalg.det(c) # The resulting shape is (3, 2) array([[-2., -2.], [-2., -2.], [-2., -2.]]) >>> linalg.det(c[0, 0]) # Confirm the (0, 0) slice, [[1, 2], [3, 4]] -2.0