用 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 解決。