【矩阵计算】QR分解-基于Householder变换
一、QR分解
QR分解是将一个矩阵分解为正交矩阵和三角矩阵的乘积。
QR分解被广泛应用于线性最小二乘问题的求解和矩阵特征值的计算。
定义2.4.1 如果实矩阵A∈R^(m×n)能化成正交矩阵Q∈R^(m×m)与上三角矩阵R∈R^(m×n)的乘积,即A=QR,则称其为A的QR分解。
二、QR分解存在性证明:基于Householder变化实现
已知,通过Householder变换,我们可以将任何一个非零向量x∈R^n转化为‖x‖2*e1,即除第一个元素外,其它元素均为零。
下面通过Householder变化来实现矩阵的QR分解。
仅考虑m=n时的情形。设矩阵A∈R^(n×n),令H1∈R^(n×n)为一个Householder变化,满足
于是,利用分块矩阵的运算,得到对矩阵左乘一次Householder变换的结果(使该矩阵第一列变成只有第一个元素非零的向量)
其中,A2阶数为n-1。
类似地,继续对A2左乘Householder矩阵,直到最后整个矩阵变成一个n阶的下三角阵。
不断重复上述过程,这样,我们得到一系列Householder矩阵
最终得到一个下三角阵
回看QR分解的主要目的:将矩阵分解成正交阵与三角阵相乘。
我们现在已经得到三角阵,即QR分解中的R,那么Q是什么呢?
已知A=QR, Hn-1...H2H1A=R,并且Hi正交且正交,得到A=H1H2...Hn-1R于是记Q=H1H2...Hn-1,并且可知Q是正交矩阵,即A=QR
于是得到利用Householder变换进行QR分解的思路:逐一左乘上Householder矩阵,Householder矩阵的阶数从一开始与A一致的n递减,矩阵规模逐步缩小至1阶,结束循环,得到三角阵R。
那么,Q要怎么返回呢?
已知Q是n个Householder矩阵的乘积,即Q=Q1Q2Q3...Qn,其中
Qj=Im-βj*v^(j)*[v^(j)]^T
其中,v^(j)是[0,...,0,vj+1^(j),...,vm(j)]T
假设有矩阵A,在A(j+1:m,j)中存储了第j个Householder向量的基本部分v^(j)(j+1:m)
为了算Q(Householder矩阵乘积),有两种做法:向前累积、向后累积。一般会使用向后累积。
三、矩阵Q的向后累积算法
结合Qj的计算公式
Qj=Im-βj*v^(j)*[v^(j)]^T
求解QR分解中矩阵Q的算法如下
给定矩阵A∈R^(m×n),假设m≥n
Q=Im
for j=n:-1:1 %因为Q是若干个从1阶到n阶的Householder矩阵的乘积,所以Qj的下标j也从n开始,步长-1,到1
Q=QjQ(左乘Househloder矩阵,改变行)
Q(j:m,j:m)=Q(j:m,j:m)-(βj*v(j:m))(v(j:m)^T*Q(j:m,j:m))(β*v)(v^T*β)
%从上面推导过程的图可以看到,第j个Householder矩阵,是与Q的每一行从第j列开始相乘,直到m,所以是j:m;同样,是与Q的每一列从第j行开始相乘直到m,所以是j:m。其他变量的范围也与这个对应。
四、矩阵R的算法
注意,此处的v与β都是使用之前博文中的Householder变换得到的返回值。
五、算法不足
上述算法适用情况是m≥n,即行数≥列数的情况,对于m<n的情况,matlab会报错,需要进一步完善算法讨论。
【矩阵计算】QR分解-基于Householder变换相关推荐
- QR分解之HouseHolder变换
#QR分解 一个矩阵的QR分解(QR decomposition)(QR factorization)是将矩阵分解成 A = Q R A=QR A=QR,其中Q是一个正交矩阵( Q T Q = I Q ...
- 基于Householder变换的QR分解
01.function [Q,R]=qrhs(A)02.% 基于Householder变换,将<strong><span style="color:#993399;&quo ...
- householder变换matlab,基于Householder变换的QR分解
01.function [Q,R]=qrhs(A) 02.% 基于Householder变换,将方阵A分解为A=QR,其中Q为正交矩阵,R为上三角阵 03.% 04.% 参数说明 05.% A:需要进 ...
- QR分解求矩阵绝对值-基于HouseHolder变换
思路: 输入矩阵A(mxn)-->HouseHolder变换-->获得矩阵B(Hessenberg矩阵nxn)-->Gievens变换 -->获得Q(标准正交nxn)和R(上三 ...
- 基于Given变换的QR分解辨析
QR分解是矩阵的一种分解算法,可以将一个非奇异矩阵分解成正交矩阵Q,和三角矩阵R(通常是上三角).使用QR迭代也可以求出矩阵的特征值,不过前一步要求矩阵变为上Hessenberg矩阵.将矩阵进行QR分 ...
- 【NA】基于QR分解的特征值迭代法
Francis于1961-1962年利用矩阵的QR分解建立了计算矩阵特征值的QR方法,是计算中小型矩阵全部特征值的最有效方法之一. 本篇的主线是第一部分介绍QR分解,第二部分介绍从QR分解引出的特征值 ...
- QR算法的Matlab 程序,三种实现矩阵QR分解的算法与程序
To learn, to share, to debate, then comes progress. ------------------------------------------------ ...
- 矩阵的QR分解以及在最小二乘法中的应用
一.最小二乘法 最小二乘法是一种数学优化方法,通过最小化误差的平方和来拟合数据点. 以线性回归模型为例,如果我们用最小二乘法来求解线性回归的系数,可得: err(yi−y^)=1n∑i=1n( ...
- 基于Givens变换的QR分解
01.function [Q,R]=qrgv(A)02.% 基于Givens变换,将方阵A分解为A=QR,其中Q为正交矩阵,R为上三角阵03.%04.% 参数说明05.% A:需要进行QR分解的方阵0 ...
- 基于一道例题进行QR分解三种方法的讲解:CGS算法,MGS算法,以及Householder算法的QR分解
参考书籍和图片来源:<矩阵分析与计算>李继根 张新发编著 第三章QR分解部分 QR分解的3种方法: 方法一:经典的Gram-Schmidt(CGS)算法(就是基于施密特正交化) 方法二: ...
最新文章
- 想要去阿里面试?你必须得跨过 JVM 这道坎!
- Git提交时提示‘The file will have its original line endings in your working directory’
- SQL 中 left join 的底层原理(各种JOIN的复杂度探究)
- tmux 上滚_实践中的tmux:回滚缓冲区
- pip 安装 scipy 出现错 no lapack/blas resources
- hdu1284钱币兑换问题
- geoiplookup命令没有任何输出问题
- UML图---基本概念
- 应用程序热补丁(二):自动生成热补丁
- 基于Qt的抽奖小程序
- Vue中使用pdf.js通过流的方式传参给pdfviewer.html
- t470键盘拆解_thinkpad t470怎么样?thinkpad t470拆机图解全面评测
- Google如何对图片搜索结果进行排名
- 软件系统可靠性的指标计算
- 电脑开机显示自动修复失败无法进入系统,解决方法(亲试有效!!!)
- Java入门(六)MySql 数据库
- HTML+PHP搭建一个生物数据增删查改网站
- MATLAB:ode45
- 网页图片循环滚动播放效果
- 旷视科技2018暑期实习-算法研究员面试记
热门文章
- 【转载】参数返回值及NRV优化
- thinkPHP集成workman扩展
- 【成功】qlv转MP4,超简单方法
- [unity2D] 迷你拼图
- 微信卡包新增入口跳转小程序
- discuzdiy图片模块_Discuz各类幻灯片的制作方法 - 完全支持DIY
- Navigator对象,获取浏览器类型userAgent,机器类型platform
- 综合函数矩量法原理及实现思路
- 发现在创建云服务器ecs实例的磁盘快照时_阿里云服务器怎么重装系统 阿里云VPS如何重装系统...
- Pandas - 5.缺失值处理