QR分解的三种方法和实现过程

这篇具有很好参考价值的文章主要介绍了QR分解的三种方法和实现过程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

QR分解

在解最小二乘问题 m i n ∣ ∣ A x − b ∣ ∣ min||Ax-b|| min∣∣Axb∣∣时,将其转化成 A T A x = A T b A^{T}Ax=A^{T}b ATAx=ATb之后该问题就是一个求解线性方程组的问题。最简单的求解线性方程组方法是高斯消去,但是有时高斯消去会增大方程的条件数,这时我们可以用正交分解来解决这个问题,即 A x = b → Q R x = b Ax=b \rightarrow QRx=b Ax=bQRx=b,其中 Q Q Q是正交矩阵( Q T Q = I Q^{T}Q=I QTQ=I), R R R是上三角矩阵。

1.Gram Schmidt正交化

希望将一般向量组 ( a 1 , a 2 , . . . , a m ) (a_{1},a_{2},...,a_{m}) (a1,a2,...,am)转化成一组正交向量 ( b 1 , b 2 , . . . , b m ) (b_{1},b_{2},...,b_{m}) (b1,b2,...,bm)

  • step1 令 b 1 = a 1 b_{1}=a_{1} b1=a1 b 2 = a 2 − k b 1 b_{2}=a_{2}-kb_{1} b2=a2kb1,希望 b 1 , b 2 b_{1},b_{2} b1,b2正交,即 < b 1 , b 2 > = 0 <b_{1},b_{2}>=0 <b1,b2>=0
    → < b 1 , a 2 − k b 1 > = 0 \rightarrow <b_{1},a_{2}-kb_{1}>=0 →<b1,a2kb1>=0
    → < b 1 , a 2 > − k < b 1 , b 1 > = 0 \rightarrow<b_{1},a_{2}>-k<b_{1},b_{1}>=0 →<b1,a2>k<b1,b1>=0
    → k = < b 1 , a 2 > < b 1 , b 1 > \rightarrow k=\frac{<b_{1},a_{2}>}{<b_{1},b_{1}>} k=<b1,b1><b1,a2>
  • step2 令 b 3 = a 3 − k 1 b 1 − k 2 b 2 b_{3}=a_{3}-k_{1}b_{1}-k_{2}b_{2} b3=a3k1b1k2b2,则希望 < b 1 , b 3 > = 0 , < b 2 , b 3 > <b_{1},b_{3}>=0,<b_{2},b_{3}> <b1,b3>=0<b2,b3>同时成立,即
    < b 1 , a 3 − k 1 b 1 − k 2 b 2 > = 0 <b_{1},a_{3}-k_{1}b_{1}-k_{2}b_{2}>=0 <b1,a3k1b1k2b2>=0
    → < b 1 , a 3 − k 1 b 1 > = 0 \rightarrow <b_{1},a_{3}-k_{1}b_{1}>=0 →<b1,a3k1b1>=0
    → k 1 = < b 1 , a 3 > < b 1 , b 1 > \rightarrow k_{1}=\frac{<b_{1},a_{3}>}{<b_{1},b_{1}>} k1=<b1,b1><b1,a3>,同理可以推出 k 2 = < b 2 , a 3 > < b 2 , b 2 > k_{2}=\frac{<b_{2},a_{3}>}{<b_{2},b_{2}>} k2=<b2,b2><b2,a3>

施密特正交化的最终形式为 b m = a m − k 1 b 1 − k 2 b 2 − . . . − k m − 1 b m − 1 b_{m}=a_{m}-k_{1}b_{1}-k_{2}b_{2}-...-k_{m-1}b_{m-1} bm=amk1b1k2b2...km1bm1,其中, k i = < b i , a m > < b i , b i > k_{i}=\frac{<b_{i},a_{m}>}{<b_{i},b_{i}>} ki=<bi,bi><bi,am>。令 A = [ a 1 , a 2 , . . . , a n ] , B = [ b 1 , b 2 , . . . , b n ] A=[a_{1},a_{2},...,a_{n}],B=[b_{1},b_{2},...,b_{n}] A=[a1,a2,...,an],B=[b1,b2,...,bn],则有 A = B T R A=B^{T}R A=BTR,其中 B B B是正交矩阵, R R R是上三角矩阵,且
R = 1 k k 1 k 1 0 1 k 2 k 2 0 0 1 k 3 0 0 0 1 R=\begin{array}{cccc} 1 & k & k_{1} & k_{1}\\ 0 & 1 & k_{2} & k_{2}\\ 0 & 0 & 1 & k_{3}\\ 0 & 0 & 0 & 1 \end{array} R=1000k100k1k210k1k2k31
综上,格拉姆-施密特正交化结束。

2.Householder变换

Householder变换是一种镜面反射,即,将一个向量 a ⃗ \vec{a} a 沿 w ⃗ \vec{w} w 的法向量对称到 b ⃗ \vec{b} b 的位置,如下图所示,这个图临时找的,有时间要替换一下
qr分解的步骤,笔记,线性代数,矩阵,算法
H = I − 2 u u T H=I-2uu^{T} H=I2uuT,其中 u T u = 1 u^{T}u=1 uTu=1,则 H x = x − 2 u u T x = x − 2 ( u T x ) u Hx=x-2uu^{T}x=x-2(u^{T}x)u Hx=x2uuTx=x2(uTx)u,其中 u T x u^{T}x uTx是标量,显然 2 ( u T x ) u 2(u^{T}x)u 2(uTx)u u ⃗ \vec{u} u 平行且相等,平行在图像中可以看出来,图中虚线和 w w w平行,但其实这个相等我没推出来,但是代入一些特殊向量如 w w w v , v T w = 0 v,v^{T}w=0 v,vTw=0两个向量都成立。

在正交分解中,Householder变换主要用来将一般向量 x ⃗ \vec{x} x 变换成向量 y ⃗ = ( c , 0 , 0 , . . . , 0 ) \vec{y}=(c,0,0,...,0) y =(c,0,0,...,0),因为该向量是镜面反射,所以只能由 x ⃗ \vec{x} x 变成目标向量 y ⃗ = ( ∣ x ⃗ ∣ , 0 , 0 , . . . , 0 ) \vec{y}=(|\vec{x}|,0,0,...,0) y =(x ,0,0,...,0)。而 u ⃗ \vec{u} u 一定和 x ⃗ − y ⃗ \vec{x}-\vec{y} x y 平行,同时 u ⃗ \vec{u} u 是单位向量,因此 u ⃗ = x ⃗ − y ⃗ ∣ x ⃗ − y ⃗ ∣ \vec{u}=\frac{\vec{x}-\vec{y}}{|\vec{x}-\vec{y}|} u =x y x y ,再代入 H = I − 2 u u T H=I-2uu^{T} H=I2uuT就找到了Householder矩阵 H H H

下面讲怎么用Householder变换做QR分解。

对于矩阵
A = x x x x x x x x x x x x x x x x A=\begin{array}{cccc} x & x & x & x\\ x & x & x & x\\ x & x & x & x\\ x & x & x & x \end{array} A=xxxxxxxxxxxxxxxx使用Householder变换可以找到 H H H,使得
H A = x x x x 0 x x x 0 x x x 0 x x x HA=\begin{array}{cccc} x & x & x & x\\ 0 & x & x & x\\ 0 & x & x & x\\ 0 & x & x & x \end{array} HA=x000xxxxxxxxxxxx

再用 H 1 ′ = 1 0 0 H 1 H_{1}'=\begin{array}{cccc} 1 & 0 \\ 0 & H_{1}\\ \end{array} H1=100H1依次对下一列进行Householder变换,就可以得到最终的上三角矩阵。

3.Givens变换(初等旋转变换)

使用初等旋转矩阵 G = c o s θ − s i n θ s i n θ c o s θ G=\begin{array}{cccc} cos\theta & -sin\theta \\ sin\theta & cos\theta \\ \end{array} G=cosθsinθsinθcosθ
作用到 x = [ x i , x j ] T x=[x_{i},x_{j}]^{T} x=[xi,xj]T上,有 G x = [ x i 2 + x j 2 , 0 ] T Gx=[\sqrt{x_{i}^{2}+x_{j}^{2}},0]^{T} Gx=[xi2+xj2 ,0]T,从而可以将一个二维向量的某一项变为0,将其用到QR分解中,对于矩阵
A = x x x x x x x x x x x x x x x x A=\begin{array}{cccc} x & x & x & x\\ x & x & x & x\\ x & x & x & x\\ x & x & x & x \end{array} A=xxxxxxxxxxxxxxxx
使用Givens变换可以找到矩阵 A = 1 0 0 0 0 1 0 0 0 0 c − s 0 0 s c A=\begin{array}{cccc} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & c & -s\\ 0 & 0 & s & c \end{array} A=1000010000cs00sc使得 G A = x x x x x x x x x x x x 0 x x x GA=\begin{array}{cccc} x & x & x & x\\ x & x & x & x\\ x & x & x & x\\ 0 & x & x & x \end{array} GA=xxx0xxxxxxxxxxxx
一次生成一个0,因此依次进行Givens变换也可以得到最终的上三角矩阵 R R R,实现QR分解。文章来源地址https://www.toymoban.com/news/detail-722895.html

到了这里,关于QR分解的三种方法和实现过程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 理顺 QR 分解算法

    咱们网站的这个公式编辑器,估计是后台生成图片后贴回来的,固定分辨率而且分辨率不高。  还不如先离线 latex 生成 pdf 后再截图上来 When A and b are known, to solver the minimization of , where . The reduction of A to various canonical form via orthogonal transformations should use Householder reflections and

    2024年01月25日
    浏览(28)
  • 矩阵分析:QR分解

    Householder变换是一种简洁而有意思的线性变换,也可称为镜面反射变换,Householder变换矩阵为 H = I − w T w H=I-w^Tw H = I − w T w 考虑向量 α alpha α 和一个单位向量 w : w T w = 1 w:w^{T}w=1 w : w T w = 1 α alpha α 在 w w w 方向上的分量是 α w / / = ( w T α ) w = w w T α alpha _{w_{//}}=left( w^{T}

    2024年02月11日
    浏览(51)
  • 4.6 QR分解二:Householder变换

      Householder反射是这样子的(图片来自瑞典皇家理工学院):   图中u是长度为1的向量。x是任意向量,H是u的Householder reflector。可见无论x是什么向量, H x Hx H x 始终除于和u正交的平面上。H和u的关系是: H = I − 2 u u ∗ H=I-2uu^* H = I − 2 u u ∗    u ∗ u^* u ∗ 是u的共轭转置

    2024年02月02日
    浏览(33)
  • 基于Givens矩阵的QR矩阵分解

    QR分解是一种将矩阵分解为正交矩阵和上三角矩阵的方法。在QR分解中,正交矩阵Q的转置是它的逆矩阵,因此QR分解可以用于求解线性方程组、最小二乘问题等。 二阶Givens矩阵 一般地,二阶Givens矩阵记为下列形式: 其中 下面开始介绍基于Givens矩阵的QR分解算法。Givens矩阵是一

    2024年02月12日
    浏览(37)
  • Matlab中求解线性方程组——高斯消元法、LU分解法、QR分解法、SVD分解法、迭代法等

    MATLAB迭代的三种方式以及相关案例举例 MATLAB矩阵的分解函数与案例举例 MATLAB当中线性方程组、不定方程组、奇异方程组、超定方程组的介绍 MATLAB语句实现方阵性质的验证 MATLAB绘图函数的相关介绍——海底测量、二维与三维图形绘制 MATLAB求函数极限的简单介绍 文章目录 前言

    2024年02月08日
    浏览(62)
  • 自相关算法,协方差算法,后向加窗算法,前向加窗算法以及QR分解法的理论介绍与matlab仿真分析

    目录 1.自相关算法 2.协方差算法 3.后向加窗算法 4.前向加窗算法 5.QR分解法        自相关算法是一种在信号处理中用来描述信号特性的算法,它主要用于估计一个信号的功率谱。对于一个离散信号x[n],其自相关函数定义为: Rxx[n] = E[x[n+m]*x[m]]       其中E[]表示期望。可以看

    2024年04月09日
    浏览(48)
  • 使用vue-qr,报错in ./node_modules/vue-qr/dist/vue-qr.js

    找到node_modules— vue-qr/dist/vue-qr.js 文件,搜…e,将…去掉,然后重新运行项目。

    2024年02月03日
    浏览(43)
  • Python实现PC摄像头扫描二维码,让你的电脑变身QR码识读器!

    目录 简介: 源代码: 源代码说明: 效果如下所示: 使用PC摄像机扫描二维码可以有很多应用场景,例如: 支付宝、微信支付等移动支付方式需要使用二维码进行支付,PC摄像机可以扫描这些支付二维码,从而实现PC端支付功能; 在生产制造过程中,可以使用二维码来管理产

    2024年02月03日
    浏览(38)
  • BUUCTF qr 1

    BUUCTF:https://buuoj.cn/challenges 题目描述: 这是一个二维码,谁用谁知道! 密文: 下载附件,得到一张二维码图片。 解题思路: 1、这是一道签到题,扫描二维码得到flag。 flag:

    2024年02月08日
    浏览(34)
  • iOS QR界面亮度调整

    亮度调事,不久在QR界面切换的时候还要考虑进入前台后台时的操作 1.QR界面功能实现代码。 2.进入前后台时的处理。这个地方要意思,必须要在Appdelegate  中的两个回调函数中实现,在QR()中添加进入前后台通知实现的话,会有问题。具体原历不清楚 - (void)applicationDidBecomeAct

    2024年02月07日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包