numpy - 使用 numpy 求解齐次系统 Ax=0

标签 numpy matrix linear-algebra least-squares

我正在尝试使用 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/

相关文章:

python - 根据其他展开矢量

c++ - 3D vector 归一化问题

python - 当作为参数传递给函数时获取 numpy 结构化数组列的名称

python - 如何访问 NumPy 多维数组的第 i 列?

opencv - 将CvSeq转换为CvMat

c++ - 编译器提示 "Error: stray '\24 0' in program"

python - 如何使用奇异值分解反转 numpy 矩阵?

python - Python NumPy 中的 np.mean() 与 np.average()?

python - 如何使用 numpy 将 nan 添加到数组的末尾

c - 简单的c程序。错误 : invalid type arguement of unary '*'