【问题标题】:Finding a vector that is orthogonal to n columns of a matrix查找与矩阵的 n 列正交的向量
【发布时间】:2021-08-14 08:30:35
【问题描述】:

给定一个矩阵B,形状为(M, N),其中M > N。如何找到与B 中所有列垂直的向量v(形状为M)。

我尝试使用 Numpy numpy.linalg.lstsq 方法来解决:Bx = 00 这里是一个带有M 零的向量。

它返回一个具有(N,) 形状的零向量。

【问题讨论】:

  • 我认为您正在寻找 Gram-Schmidt Orthogonization。也许this gist here 有帮助。
  • @NMme 谢谢你的回复。您建议的链接中的函数与 numpy 函数''' Q, R = np.linalg.qr(B)''' 相同吗?
  • 我对线性代数了解不多,但矩阵需要满秩,以便根据Wikipedia 等价成立。但是,AFAIK,您的矩阵不是满秩的,因为您尝试找到一个正交向量并假设它确实存在(由于矩阵的形状应该是这种情况)

标签: python-3.x numpy linear-algebra


【解决方案1】:

你可以使用 sympy 库,比如

from sympy import Matrix
B = [[2, 3, 5], [-4, 2, 3], [0, 0, 0]]
V = A.nullspace()[0]

或查找整个空空间

N = A.nullspace()

【讨论】:

    【解决方案2】:

    如果其他人需要答案,这对我有用:

    u,s,vh=np.linalg.svd(B)
    v=vh[-1:1]
    

    【讨论】:

      猜你喜欢
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 2015-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多