用 np.linalg.solve 在 numpy 中用 2 个未知方程和 3 个方程求解线性方程

Solve linear equation with 2 unkown and 3 equations in numpy with np.linalg.solve

具有两个未知数的 3 个方程有 3 个解:一个解、无限解、无解。 你会如何在 Numpy 中写这个 得到解决方案? 我按照你对 3 个未知数的方式进行了尝试:

import numpy as np

a = np.array([-9,-8, 14])

A = np.array([[ 1, 2, -2],
              [-3,-1, 4],
              ])
x = np.linalg.solve(A, a)
print(x)

但给出错误,因为 A 不是正方形。遗憾的是,如果我删除 a 和 A 的最后一列,尽管我得到了答案,但系统可能仍然没有解,因为它可能不适合第三个方程。

您可以使用 lstsq 方法完成所有这些操作。例如,

a = np.array([-9,-8, 14])
A = np.array([[ 1, 2, -2],
              [-3,-1, 4],
              ])
x,err,rk = np.linalg.lstsq(A.T, a)[:3]
print(x)
print(err)
print(rk)

产生输出

[-3.  2.]
[9.98402083e-31]
2

从误差为零(达到数值精度)这一事实,您知道这个解是精确的,也就是说 A.T@x 应该正好等于 a。所以,系统至少有一个解。

根据秩为 2(与 A.T 中的列数匹配)这一事实,我们推断 A.T 具有平凡的零空间,这意味着任何解都是唯一的。