我正在尝试使用 numpy.linalg.lstsq 来解决具有以下约束的同质系统:
Ax = 0
|x| = 1
如果我只是纯粹打电话:
numpy.linalg.lstsq(A, np.zeros((A.shape[0],1), dtype=np.float))
解决方案是零列矩阵。我想知道如何创建 |x|=1 约束,以便我得到不同的解决方案而不是零矩阵。
谢谢。
最佳答案
您可以通过强制解的一项为 1 来设置约束,然后求解线性系统的其余部分。一旦找到解决方案,您就可以正常化。
import numpy as np
a = np.arange(9).reshape(3, 3)
b = a[:, 0].copy()
# we impose a condition that first term be 1,
x = np.linalg.lstsq(a[:, 1:], -b)[0]
x = np.r_[1, x]
x /= np.linalg.norm(x)
print(a.dot(np.r_[1, x])) # [0, 0, 0]
关于numpy - 使用 numpy 求解齐次系统 Ax=0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39952477/