基于Householder变换完成QR分解进而求解逆矩阵,实矩阵和复矩阵都适用
目录
前言
今天花时间认真研究了Householder变换,理解了它变换的几何意义,以及怎样用它将可逆矩阵分解成Q矩阵和R矩阵。本文将站在我个人理解的基础上阐述什么是Householder变换及它的几何意义,同时也会通过列举几个例子说明如何将一个矩阵通过Householder变换分解为Q矩阵和R矩阵,例子中待分解的矩阵包括实矩阵和复矩阵。另外,也会分析该算法的计算复杂度,找出各种运算次数和矩阵阶次之间的关系。最后,会用MATLAB进行仿真,当然,代码也会分享出来。
提示:以下是本篇文章正文内容,希望能帮助到各位,转载请附上链接。
一、Householder变换简介
householder变换(Householder transformation),译为“豪斯霍尔德变换”,或译“豪斯霍德转换”,又称初等反射(Elementary reflection),最初由A.C Aitken在1932年提出。householder变换最初由A.C Aitken在1932年提出。Alston Scott Householder在1958年指出了这一变换在数值线性代数上的意义。这一变换将一个向量变换为由一个超平面反射的镜像,是一种线性变换。其变换矩阵被称作豪斯霍尔德矩阵,在一般内积空间中的类比被称作豪斯霍尔德算子。超平面的法向量被称作豪斯霍尔德向量。
Householder变换是一种重要的矩阵变换方法,用于将一个向量通过相似变换转化为另一个向量。它可以被用来实现许多数值计算任务,如矩阵的QR分解、线性方程组求解、特征值计算等。
Householder变换可以将向量的某些元素置零,同时保持该向量的范数不变。
二、Householder矩阵
Householder矩阵定义为:
即
其中 I 为单位矩阵,其中householder向量v满足:
其中表示向量
的第一个元素的归一化处理,即
看其他文章,对于实数,全将当成 -1处理,确实也没问题。实际上,实数在这里变成了符号函数,但是0的符号必须为1或-1,不能为0,不然算不出来,编程验证过,为求简单,实数直接用-1好了。
一般,我们会对v进行归一化处理,那么归一化后 Householder矩阵可写为:
三、Householder矩阵的性质
① Householder变换矩阵是共轭对称矩阵,因为
② Householder变换矩阵是正交矩阵,因为
③ Householder变换矩阵是对合的,因为
四、Householder变换及几何意义
对于任意与向量 v 垂直的向量 z(即 ),经Householder变换矩阵旋转,其值不变
任意向量 x 都可以写成如下形式
其中 z 是 x 中与向量 v 垂直的成分, 是 x 中与向量 v 同向的成分,则经过Householder变换矩阵旋转后:
对照旋转前向量 x 可见:与向量 v 垂直的分量保持不变,与其同向分量方向相反。 二维形式如下(这里u=v)旋转后向量 y 与旋转前向量 x 关于与向量 v 垂直的法平面呈镜像,因此Householder变换也称为Householder 反射。另外还需要注意,旋转前后向量模长不变。
五、Householder变换进行QR分解
由householder变换的性质,可以使n维非零向量
变换为
因此可以对矩阵A按列进行分块,即
首先对a1进行变换,令x=a1,则
变换为
那么就可以得到
重复上次方法对
的第一列进行变换,同理计算得到householder矩阵为
重复上面的步骤,做n-1次变换后,就可以得到一个上三角矩阵R
由于H是正交矩阵,因此多个正交矩阵相乘依然是正交矩阵,并且正交矩阵的逆等于矩阵的转置,所以可以得到
至此,便成功利用Householder进行了QR分解。
六、例1 Householder变换
设,用Householder变换化x为与
同方向的向量。
计算
取
则
则
七、例2 实矩阵QR分解
已知矩阵,用Householder进行QR分解。
记
记
令
则
从而
记
记
令
则
记
则
所以
故
八、例3 复矩阵QR分解
复矩阵就不写具体题目了,需要注意的是,计算householder向量v时用以下公式
其中表示向量
的第一个元素的归一化处理,即
九、求逆矩阵
分解得到Q矩阵和R矩阵后可参考下面两篇文章进行求逆矩阵:
施密特正交化QR分解求逆矩阵与MATLAB仿真_qr分解法求逆矩阵-CSDN博客
一种基于约化因子上三角矩阵求逆方法与MATLAB仿真-CSDN博客
十、计算量分析
省略,算起来比较复杂,涉及乘法、加法、除法、开方。
等什么时候很闲,再来分析一下咯。
十一、MATLAB仿真
1、实矩阵仿真
可见,与上面算的例题结果吻合。
2、复矩阵仿真
十二、参考资料
总结
以上就是今天要讲的内容,本文介绍了Householder变换,在我理解的基础上讲解了它变换的几何意义,以及怎样用它将可逆矩阵分解成Q矩阵和R矩阵。同时,也用MATLAB验证了Householder变换 QR分解算法。