本篇为稀疏矩阵求解算法经典论著<Direct Methods for Sparse Linear System>的<读书笔记 9>
解决最小二乘问题最可靠的方法是使用正交变换。本章考虑了基于Householder反射和给定旋转的QR因子分解。
5.1 Householder reflections
Householder 反射变换是形如
的正交矩阵,其中
为标量,并且
是一个列向量。向量
以及标量
是可以由向量
所确定的,并且使得
得到的向量的首元素
。此运算对于长度为
的向量
来说,仅需要
个浮点数运算(
)。矩阵
是对称正交阵(
)。公式如下:
令
和
是向量
和
的非零样式。如果
,则
。如果此条件始终满足,则稀疏矩阵的QR算法的理论以及算法将会得到简化。所以此处在讨论时均假定了
是向量
的结构化entry,即
总是稀疏向量
的entry,但是
可能数值为0,这使得
总是成立的。同时如果将矩阵
用于其他的向量
,即
,并且假定
,如果
非空,则
的非零样式变为
;否则
。
函数cs_happly对一个稠密向量
进行Householder变换,其中
是稀疏的。将
重写为
。向量
是矩阵
的第
列。
5.2 Left- and right-looking QR factorization
本节介绍两种基于Householder的QR分解算法,将m×n矩阵A分解成乘积QR,其中Q是正交的,R是上三角形(如果m < n则为上梯形)。
假设A是
且
。一系列的n个Householder变换
,
,...
将A简化为上三角形形式。我们用
表示对
做了
次Householder变换
。对于第一个Householder变换矩阵
是由
的第一列得到的,所以
的第一列中除了对角线元素外,其他的都为零,并且
。同理,第
个Householder变换矩阵是由向量
得到,
的长度为
,从而可以计算出相对应的标量
以及向量
(长度为
)。这里我们令
为长度
的向量,其
到
个元素为0,
到
的元素为向量
(即
)。则有
。
定理5.1:
分解即为
,其中
并且
,
则正交矩阵
。
Householder变换可以采用左看(left-looking)以及右看(right-looking)方式。
右看算法qr_right中每一个Householder反射矩阵一旦构建,则就与A进行运算。但是qr_right函数比较难应用于稀疏矩阵算法中,即使它是前波稀疏QR(multifrontal sparse QR)算法的基础。其伪代码为:
左看算法qr_left仅对当前第
列应用Householder反射矩阵,一次运算仅对一列进行计算,能够更简单的应用于稀疏情况。
请注意qr_right和qr_left不计算Q的显式表示,即得到了每次householder变换的
,可以再额外计算对应的
矩阵,从而计算出
。下面描述的稀疏左视QR分解也是如此。
5.3 Householder-based sparse QR factorization
左侧QR分解算法(qr_left)构成了稀疏QR分解的基础。
令
和
表示矩阵
的第
行以及第
列的非零样式。令
和
表示
的第
行以及第
列的非零样式。令
是
的非零样式。令
是矩阵
的列消去树(即
的消去树)。
下面介绍相关的一些定理,有些定理要求
是结构化非零的(也就是说,即使在数字上为零,但是它是稀疏数据结构中的一个entry)。一些定理要求矩阵具有
strong Hall(在7.3节介绍)性质;否则,它们为非零模式为松散的上边界(loose upper bounds)。
strong Hall:如果
矩阵
的每个
(
)子矩阵至少有
个非零行。这样的
用消去法能够精确的预测
的结构。这种性质被称为
SHP(strong Hall property
)。
如果一个矩阵不具备这样特性,则可以通过行交换得到梯形矩阵后,得到的矩阵则满足SHP,并且并不影响QR分解,即行变换后的矩阵
的QR分解,乘以
后就得到了
的QR分解。
定理5.2 考虑到
,对于行号
,则
的非零样式与
的非零样式一致;对于行号
,则对于
的非零样式为
。
定理5.3 如果
为正定阵,并且它的Cholesky分解为
,则有
。
定理5.4 如果
对所有的
,则有
。
定理5.5 假定矩阵
具有SHP特性,则
,其中
表示
的Cholesky分解的
的第
行的非零样式。如果
不具有SHP特性,则
。
定理5.6
,其中
是
的上三角部分的第
列的非零样式。(假设
具有SHP特性)。
定理5.7
(假设
具有SHP特性)。
定理5.8 如果A具有SHP特性,
,并且
。如果不满足SHP,则为
的上界。
定理5.9,如果A具有SHP特性,
。否则的话,为
的上界。
这些定理构成了QR分解的符号分析(尤其是定理5.2和5.8),由下图所示。其中上三角矩阵
以及Householder向量组成的下三角矩阵
的构成在同一个矩阵中。
左视QR分解的伪代码则如下: