如何使用正交化方法在数值上有效地识别线性相关向量?

计算科学 线性代数
2021-12-04 09:15:11

我有一组列向量[v1,v2,v3,...,vk]我想得到标准正交基P对于这些向量的范围。我使用修改后的 Gram-Schmidt 进行正交化。如果v3是一个线性组合v1v2, 当我们正交化v3,它将返回一个0-向量。我的问题是什么时候向量应该被视为数字零?

我试图在将预测减去之前的基础后计算残差的范数并将其与范数进行比较v3,如果这个比率小于某个数字(比如 1%),那么我可以将其视为0-向量。但是这种方法效果不好。有没有人可以帮我解决这个问题?我不喜欢使用 SVD,因为它太贵了,在这种情况下我需要良好的准确性和效率。非常感谢!

1个回答

您要做的是定义(相对)阈值ϵ确定向量何时为零:

v3ϵv3.
您选择但这当然与您可能选择的任何其他数字一样任意。问题是没有这样的通用常数可以使用。您应该考虑的因素包括ϵ=0.01

  • 您进行计算的精度(例如,float 与 double)τ
  • 向量的大小
  • 向量的条目是否准确或受测量噪声影响
  • 等等

例如,如果元素是精确的,但您以双精度进行计算,那么 必须肯定被认为是零。τ1016

v3τNv3

在实践中,您可能希望选择明显大于,但 0.01 似乎相当大,除非您的向量的条目只是不完全知道。ϵτN

其它你可能感兴趣的问题