用 np.solve 求解線性系統
考慮以下三個等式:
x0 + 2 * x1 + x2 = 4
x1 + x2 = 3
x0 + x2 = 5
我們可以將此係統表示為矩陣方程 A * x = b
,其中:
A = np.array([[1, 2, 1],
[0, 1, 1],
[1, 0, 1]])
b = np.array([4, 3, 5])
然後,使用 np.linalg.solve
來解決 x
:
x = np.linalg.solve(A, b)
# Out: x = array([ 1.5, -0.5, 3.5])
A
必須是正方形和滿秩矩陣:它的所有行必須是線性無關的。A
應該是可逆的/非奇異的(其行列式不是零)。例如,如果 A
的一行是另一行的倍數,則呼叫 linalg.solve
將提升 LinAlgError: Singular matrix
:
A = np.array([[1, 2, 1],
[2, 4, 2], # Note that this row 2 * the first row
[1, 0, 1]])
b = np.array([4,8,5])
這樣的系統可以用 np.linalg.lstsq
解決。