带线性约束的 QR 与 SVD 分解

带线性约束的 QR 分解

考虑矩阵 ,MATLAB 提供的 QR 分解包括两种形式:完整的 QR 分解和 economy QR 分解。 后者是在 的行数大于列数的情况下进行尺寸精简,不会造成任何精度损失。(如果行数不大于列数,那么 economy QR 分解退化为完整的 QR 分解)

例如完整的 QR 分解形如

其中 为正交方阵, 是上三角矩阵。 如果 ,那么

其中 是上三角方阵。这同时表明 的后 列是没有必要进行计算和存储的。

其中 的前 列。

如果 满足线性约束

其中 列满秩(即 个线性无关的约束),此时自然有

也就是说 的列向量张成的空间维数 不可能超过 。 那么:

  • 时,完整的 QR 分解 不可能保证 满足线性约束 ,因为根本找不到一套完整的 正交基满足线性约束。

  • 时,economy QR 分解 列满秩,即 时自动保证 。此时 张成同一个 维子空间,包含于约束子空间 ;只有 时才张成整个约束子空间。秩亏时,未经约束的正交补全不保证满足约束。

时,如果 ,是否可以加上一些修改以保证线性约束满足? 从子空间的角度理解,满足线性约束的子空间维度为 ,但是此时 只张成了其中的 维子空间,但是 需要选择一个 维子空间,剩下的 维子空间的基在原始的 QR 分解算法中是任取的,但是我们现在要限制它仍然在线性约束子空间中。 记满足线性约束的子空间的一组单位正交基为 ,那么

由于 满足约束,显然有

如果对 进行 economy QR 分解(此时仍然有

其中 ,那么取 就可以得到

并且保证 满足线性约束

需要说明的是,这里的整个算法流程只要求 ,对于 的情况都可以进行处理。

在实际的数值求解中,构造一个完整的 并不容易,我们考虑更典型的情况: 只有一个线性约束

其中 。不妨假设 是单位化的,并且要求 ,构造 Householder 矩阵

其中取 ,显然在 不是零向量时总是有 ,因此 是满秩的,由于

那么可以取

以保证 列满秩和 。可以计算

对于 的 QR 分解结果

最后恢复

带线性约束的 SVD 分解

考虑矩阵 ,MATLAB 提供的 SVD 分解包括两种形式:完整的 SVD 分解和 economy SVD 分解。 后者是在 非方阵的情况下进行尺寸精简,不会造成任何精度损失。(如果行数等于列数,那么 economy SVD 分解退化为完整的 SVD 分解)

例如完整的 SVD 分解形如

其中 为完整的正交方阵, 是对角矩阵。 如果 ,那么

其中 是对角方阵。这同时表明 的后 列是没有必要进行计算和存储的。

其中 的前 列。 如果 ,那么

其中 是对角方阵。这同时表明 的后 列是没有必要进行计算和存储的。

其中 的前 列。

如果 满足线性约束

其中 列满秩(即 个线性无关的约束),此时自然有

也就是说 的行向量张成的空间维数 不可能超过 。 那么:

  • 时,economy SVD 分解 不可能保证 满足线性约束 ,因为根本找不到一套完整的 正交基满足线性约束。

  • 时,economy SVD 分解 行满秩,即 时自动保证 。此时 的列空间等于 的行空间,是约束子空间 中的一个 维子空间;只有 时才张成整个约束子空间。秩亏时,未经约束的正交补全不保证满足约束。

时,如果 ,是否可以加上一些修改以保证线性约束满足? 从子空间的角度理解,满足线性约束的子空间维度为 ,但是此时 只张成了其中的 维子空间,但是 需要选择一个 维子空间,剩下的 维子空间的基在原始的 SVD 分解算法中是任取的,但是我们现在要限制它仍然在线性约束子空间中。 记满足线性约束的子空间的一组单位正交基为 ,那么

由于 满足约束,显然有

如果对 进行 economy SVD 分解(此时仍然有

其中 ,那么取 就可以得到

并且保证 满足线性约束

与 QR 分解不同,我们通常对 SVD 分解伴随低秩截断操作,此时和标准的 economy SVD 分解不同,我们不需要受限于 的情况,可以在更一般的情况下考虑:对 ,假设满足线性约束

其中 列满秩(即 个线性无关的约束), 我们要求一个低秩近似

其中 满足列向量单位正交, 是对角方阵。 要求 满足线性约束

这必然要求 。 记满足线性约束的子空间的一组单位正交基为 ,那么

由于 满足约束,显然有

如果对 进行截断 SVD 分解(这里要求

其中 ,那么取 就可以得到

并且保证 满足

对于截断 SVD 分解,整个流程只要求

Remark

时的具体数值实现与前面 QR 分解的做法相同,这里不再重复。