一、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变换相关推荐

  1. QR分解之HouseHolder变换

    #QR分解 一个矩阵的QR分解(QR decomposition)(QR factorization)是将矩阵分解成 A = Q R A=QR A=QR,其中Q是一个正交矩阵( Q T Q = I Q ...

  2. 基于Householder变换的QR分解

    01.function [Q,R]=qrhs(A)02.% 基于Householder变换,将<strong><span style="color:#993399;&quo ...

  3. householder变换matlab,基于Householder变换的QR分解

    01.function [Q,R]=qrhs(A) 02.% 基于Householder变换,将方阵A分解为A=QR,其中Q为正交矩阵,R为上三角阵 03.% 04.% 参数说明 05.% A:需要进 ...

  4. QR分解求矩阵绝对值-基于HouseHolder变换

    思路: 输入矩阵A(mxn)-->HouseHolder变换-->获得矩阵B(Hessenberg矩阵nxn)-->Gievens变换 -->获得Q(标准正交nxn)和R(上三 ...

  5. 基于Given变换的QR分解辨析

    QR分解是矩阵的一种分解算法,可以将一个非奇异矩阵分解成正交矩阵Q,和三角矩阵R(通常是上三角).使用QR迭代也可以求出矩阵的特征值,不过前一步要求矩阵变为上Hessenberg矩阵.将矩阵进行QR分 ...

  6. 【NA】基于QR分解的特征值迭代法

    Francis于1961-1962年利用矩阵的QR分解建立了计算矩阵特征值的QR方法,是计算中小型矩阵全部特征值的最有效方法之一. 本篇的主线是第一部分介绍QR分解,第二部分介绍从QR分解引出的特征值 ...

  7. QR算法的Matlab 程序,三种实现矩阵QR分解的算法与程序

    To learn, to share, to debate, then comes progress. ------------------------------------------------ ...

  8. 矩阵的QR分解以及在最小二乘法中的应用

    一.最小二乘法   最小二乘法是一种数学优化方法,通过最小化误差的平方和来拟合数据点.   以线性回归模型为例,如果我们用最小二乘法来求解线性回归的系数,可得: err(yi−y^)=1n∑i=1n( ...

  9. 基于Givens变换的QR分解

    01.function [Q,R]=qrgv(A)02.% 基于Givens变换,将方阵A分解为A=QR,其中Q为正交矩阵,R为上三角阵03.%04.% 参数说明05.% A:需要进行QR分解的方阵0 ...

  10. 基于一道例题进行QR分解三种方法的讲解:CGS算法,MGS算法,以及Householder算法的QR分解

    参考书籍和图片来源:<矩阵分析与计算>李继根 张新发编著  第三章QR分解部分 QR分解的3种方法: 方法一:经典的Gram-Schmidt(CGS)算法(就是基于施密特正交化) 方法二: ...

最新文章

  1. 想要去阿里面试?你必须得跨过 JVM 这道坎!
  2. Git提交时提示‘The file will have its original line endings in your working directory’
  3. SQL 中 left join 的底层原理(各种JOIN的复杂度探究)
  4. tmux 上滚_实践中的tmux:回滚缓冲区
  5. pip 安装 scipy 出现错 no lapack/blas resources
  6. hdu1284钱币兑换问题
  7. geoiplookup命令没有任何输出问题
  8. UML图---基本概念
  9. 应用程序热补丁(二):自动生成热补丁
  10. 基于Qt的抽奖小程序
  11. Vue中使用pdf.js通过流的方式传参给pdfviewer.html
  12. t470键盘拆解_thinkpad t470怎么样?thinkpad t470拆机图解全面评测
  13. Google如何对图片搜索结果进行排名
  14. 软件系统可靠性的指标计算
  15. 电脑开机显示自动修复失败无法进入系统,解决方法(亲试有效!!!)
  16. Java入门(六)MySql 数据库
  17. HTML+PHP搭建一个生物数据增删查改网站
  18. MATLAB:ode45
  19. 网页图片循环滚动播放效果
  20. 旷视科技2018暑期实习-算法研究员面试记

热门文章

  1. 【转载】参数返回值及NRV优化
  2. thinkPHP集成workman扩展
  3. 【成功】qlv转MP4,超简单方法
  4. [unity2D] 迷你拼图
  5. 微信卡包新增入口跳转小程序
  6. discuzdiy图片模块_Discuz各类幻灯片的制作方法 - 完全支持DIY
  7. Navigator对象,获取浏览器类型userAgent,机器类型platform
  8. 综合函数矩量法原理及实现思路
  9. 发现在创建云服务器ecs实例的磁盘快照时_阿里云服务器怎么重装系统 阿里云VPS如何重装系统...
  10. Pandas - 5.缺失值处理