识别线性相关向量的 Gram-Schmidt 方法

计算科学 线性代数 矩阵 基组
2021-12-13 17:18:29

正交化一组向量(相互正交的单位长度向量)的方法是 Gram-Schmidt 过程: http ://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process

请注意,嵌套的 for循环意味着区别在于向量vi和向量{v1,,vi1}.

但是,我想知道在输入向量集线性相关的情况下该过程的行为。即,假设过程在向量上初始化{v1,v2,v3,v4,v5}. 如果v4可以表示为的线性组合{v1,v2,v3},该过程将设置v4=0n(即零向量)。

现在假设v2可以表示为的线性组合{v3,v4,v5}. 向量的这种排序是否意味着 Gram-Schmidt 过程将无法设置v2=0n(未能报告线性相关性)?如果是这样,确保 Gram-Schmidt 产生正交向量并报告线性相关向量的常用方法是什么?

2个回答

如果v2可以表示为的线性组合{v3,v4,v5},但不是这些向量的子集,然后,例如,v5是在线性跨度{v2,v3,v4}. 所以你的算法可能会映射v50.

通常,如果您将 Gram-Schmidt 过程应用于vi,1iL, 一个向量vk映射到0如果它在线性范围内v1,,vk1,在这种情况下,您可能会从进一步考虑中删除它。最终,您的算法将产生一个正交基{w1,,wl}的线性跨度{v1,,vL},lL

当然,这只适用于舍入误差。此外,您可能会使用稳定的 Gram-Schmidt 过程。一个有趣的后续问题是何时应将向量视为数字0.

虽然它没有回答您的明确问题,但我提供以下重要评论,可能会回答问题背后的意图。

如果使用标准 Householder 计算正交化,则可以避免 Gram-Scmidt 过程在依赖情况下的异常QR因式分解(或在稀疏情况下为 Givens 变体)。后者也更加稳定,因此通常是首选方法。然后依赖关系简单地通过一个或多个零(或在有限精度算术中)微小的对角线条目反映R. 列旋转有助于将这些微小的条目移向底部R.