带线性约束的 QR 分解
考虑矩阵 ,MATLAB 提供的 QR 分解包括两种形式:完整的 QR 分解和 economy QR 分解。 后者是在 的行数大于列数的情况下进行尺寸精简,不会造成任何精度损失。(如果行数不大于列数,那么 economy QR 分解退化为完整的 QR 分解)
例如完整的 QR 分解形如
其中 为正交方阵, 是上三角矩阵。 如果 ,那么
其中 是上三角方阵。这同时表明 的后 列是没有必要进行计算和存储的。
其中 是 的前 列。
如果 满足线性约束
其中 列满秩(即 个线性无关的约束),此时自然有
也就是说 的列向量张成的空间维数 不可能超过 。 那么:
在 时,如果 ,是否可以加上一些修改以保证线性约束满足? 从子空间的角度理解,满足线性约束的子空间维度为 ,但是此时 只张成了其中的 维子空间,但是 需要选择一个 维子空间,剩下的 维子空间的基在原始的 QR 分解算法中是任取的,但是我们现在要限制它仍然在线性约束子空间中。 记满足线性约束的子空间的一组单位正交基为 ,那么
由于 满足约束,显然有
如果对 进行 economy QR 分解(此时仍然有 )
其中 ,那么取 就可以得到
并且保证 满足线性约束
需要说明的是,这里的整个算法流程只要求 ,对于 和 的情况都可以进行处理。
在实际的数值求解中,构造一个完整的 并不容易,我们考虑更典型的情况: 只有一个线性约束
其中 。不妨假设 是单位化的,并且要求 ,构造 Householder 矩阵
其中取 ,显然在 不是零向量时总是有 ,因此 是满秩的,由于
那么可以取
以保证 列满秩和 。可以计算
对于 的 QR 分解结果
最后恢复
带线性约束的 SVD 分解
考虑矩阵 ,MATLAB 提供的 SVD 分解包括两种形式:完整的 SVD 分解和 economy SVD 分解。 后者是在 非方阵的情况下进行尺寸精简,不会造成任何精度损失。(如果行数等于列数,那么 economy SVD 分解退化为完整的 SVD 分解)
例如完整的 SVD 分解形如
其中 和 为完整的正交方阵, 是对角矩阵。 如果 ,那么
其中 是对角方阵。这同时表明 的后 列是没有必要进行计算和存储的。
其中 是 的前 列。 如果 ,那么
其中 是对角方阵。这同时表明 的后 列是没有必要进行计算和存储的。
其中 是 的前 列。
如果 满足线性约束
其中 列满秩(即 个线性无关的约束),此时自然有
也就是说 的行向量张成的空间维数 不可能超过 。 那么:
在 时,如果 ,是否可以加上一些修改以保证线性约束满足? 从子空间的角度理解,满足线性约束的子空间维度为 ,但是此时 只张成了其中的 维子空间,但是 需要选择一个 维子空间,剩下的 维子空间的基在原始的 SVD 分解算法中是任取的,但是我们现在要限制它仍然在线性约束子空间中。 记满足线性约束的子空间的一组单位正交基为 ,那么
由于 满足约束,显然有
如果对 进行 economy SVD 分解(此时仍然有 )
其中 ,那么取 就可以得到
并且保证 满足线性约束
与 QR 分解不同,我们通常对 SVD 分解伴随低秩截断操作,此时和标准的 economy SVD 分解不同,我们不需要受限于 的情况,可以在更一般的情况下考虑:对 ,假设满足线性约束
其中 列满秩(即 个线性无关的约束), 我们要求一个低秩近似
其中 和 满足列向量单位正交, 是对角方阵。 要求 满足线性约束
这必然要求 。 记满足线性约束的子空间的一组单位正交基为 ,那么
由于 满足约束,显然有
如果对 进行截断 SVD 分解(这里要求 )
其中 ,那么取 就可以得到
并且保证 满足
对于截断 SVD 分解,整个流程只要求 。