分类: C/C++
2007-04-18 15:16:44
设
这样,最小二乘问题
(3.3.1)
就等价于原最小二乘问题
(3.1.3)。因此,我们就可望通过适当选取正交矩阵定理
3.3.1(QR分解定理)设 (3.3.2)
其中
证明
先证明QR分解的存在性。对对
其中
则
再证唯一性。设
既是正交矩阵又是对角元均为正数的上三角矩阵,这只能是单位矩阵。从而,必有
利用
QR分解,我们就可以实现正交化方法。设并且令
那么
由此即知,
综合上面的讨论,可得正交化方法的基本步骤为:
计算
计算
求解上三角方程组
由此可知,实现正交化方法的关键是如何实现矩阵
用
Householder方法计算QR分解与不选主元的Gauss消去法很类似,就是利用Householder变换逐步将那么我们现在的任务就是集中精力于第三列杯为“
+”的5个元素,确定一个Householder变换.
令
对于一般的矩阵
其中
第
使得
其中
则
其中
则
注意,这样得到的上三角矩阵
下面考虑计算的QR分解的存储问题。当分解完成后,一般来说,
就不再需要,便可用来存放
和
。通常并不是将
算出,而是只存放构成它的
个Householder矩阵
,而对每个
,我们只需要保存
和
即可。注意到
有如下形式
我们正好可以将
综合上面的讨论,可得如下算法。
算法
3.3.1 (计算QR分解:Householder变换法)容易算出
,这一算法的运算量为Householder
方法并不是实现QR分解的唯一方法,例如,我们亦可利用Givens变换或Gram-Schmidt正交化来实现。通常用Givens变换来实现QR分解所需的运算量大约是Householder方法的二倍,但如果此外,
QR分解不仅可用来求解最小二乘问题,而且它也是数值代数许多重要算法的基础。例如,著名的求解特征值问题的QR方法就是利用这一分解而得到的;再如,我们亦可利用QR分解求解线性方程组(1.1.3),而且对于病态方程组QR分解法的计算结果往往要比三角分解法好得多。当然,前者比后者的运算时也要大的多。