numpy.linalg.solve#
- linalg.solve(a, b)[source]#
解線性矩陣方程式,或線性純量方程式系統。
計算適定 (well-determined),亦即滿秩 (full rank) 線性矩陣方程式 ax = b 的「精確」解 x。
- 參數:
- a(…, M, M) 類陣列 (array_like)
係數矩陣。
- b{(M,), (…, M, K)}, 類陣列 (array_like)
縱座標或「應變數」值。
- 回傳值:
- x{(…, M,), (…, M, K)} ndarray
系統 a x = b 的解。如果 b 的形狀為 (M,),則回傳形狀為 (…, M);如果 b 的形狀為 (…, M, K),則回傳形狀為 (…, M, K),其中 “…” 部分在 a 和 b 之間進行廣播 (broadcasted)。
- 拋出:
- LinAlgError
如果 a 是奇異矩陣或非方陣。
另請參閱
scipy.linalg.solve
SciPy 中類似的函數。
註解
適用廣播規則,詳細資訊請參閱
numpy.linalg
文件。解是使用 LAPACK 常式
_gesv
計算的。a 必須是方陣且滿秩,亦即所有列 (或等價地,行) 必須是線性獨立的;如果任一條件不成立,請使用
lstsq
來取得系統/方程式的最小平方法最佳「解」。在 2.0 版本中變更:b 陣列僅在其正好為 1 維時,才被視為形狀為 (M,) 的行向量。在所有其他情況下,它都被視為 (M, K) 矩陣的堆疊。先前,如果 b.ndim 等於 a.ndim - 1,則 b 會被視為 (M,) 向量的堆疊。
參考文獻
[1]G. Strang, 《線性代數及其應用》(Linear Algebra and Its Applications),第二版,Orlando, FL, Academic Press, Inc., 1980, pg. 22。
範例
解以下方程式系統:
x0 + 2 * x1 = 1
和3 * x0 + 5 * x1 = 2
>>> import numpy as np >>> a = np.array([[1, 2], [3, 5]]) >>> b = np.array([1, 2]) >>> x = np.linalg.solve(a, b) >>> x array([-1., 1.])
檢查解是否正確
>>> np.allclose(np.dot(a, x), b) True