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