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