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

QR分解是线性代数中一种重要的矩阵分解方法,常用于解决最小二乘问题。通过将原问题转化为求解线性方程组,然后利用正交矩阵Q和上三角矩阵R的乘积形式简化计算。文章介绍了Gram-Schmidt正交化过程,以及Householder变换和Givens变换这两种实现QR分解的方法,它们分别通过反射和旋转变换逐步将矩阵转换为上三角形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QR分解

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

1.Gram Schmidt正交化

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

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

施密特正交化的最终形式为bm=am−k1b1−k2b2−...−km−1bm−1b_{m}=a_{m}-k_{1}b_{1}-k_{2}b_{2}-...-k_{m-1}b_{m-1}bm=amk1b1k2b2...km1bm1,其中,ki=<bi,am><bi,bi>k_{i}=\frac{<b_{i},a_{m}>}{<b_{i},b_{i}>}ki=<bi,bi><bi,am>。令A=[a1,a2,...,an],B=[b1,b2,...,bn]A=[a_{1},a_{2},...,a_{n}],B=[b_{1},b_{2},...,b_{n}]A=[a1,a2,...,an],B=[b1,b2,...,bn],则有A=BTRA=B^{T}RA=BTR,其中BBB是正交矩阵,RRR是上三角矩阵,且
R=1kk1k101k2k2001k30001R=\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的位置,如下图所示,这个图临时找的,有时间要替换一下
Householder变换
H=I−2uuTH=I-2uu^{T}H=I2uuT,其中uTu=1u^{T}u=1uTu=1,则Hx=x−2uuTx=x−2(uTx)uHx=x-2uu^{T}x=x-2(u^{T}x)uHx=x2uuTx=x2(uTx)u,其中uTxu^{T}xuTx是标量,显然2(uTx)u2(u^{T}x)u2(uTx)uu⃗\vec{u}u平行且相等,平行在图像中可以看出来,图中虚线和www平行,但其实这个相等我没推出来,但是代入一些特殊向量如wwwv,vTw=0v,v^{T}w=0v,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}xy平行,同时u⃗\vec{u}u是单位向量,因此u⃗=x⃗−y⃗∣x⃗−y⃗∣\vec{u}=\frac{\vec{x}-\vec{y}}{|\vec{x}-\vec{y}|}u=xyxy,再代入H=I−2uuTH=I-2uu^{T}H=I2uuT就找到了Householder矩阵HHH

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

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

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

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

使用初等旋转矩阵G=cosθ−sinθsinθcosθG=\begin{array}{cccc} cos\theta & -sin\theta \\ sin\theta & cos\theta \\ \end{array} G=cosθsinθsinθcosθ
作用到x=[xi,xj]Tx=[x_{i},x_{j}]^{T}x=[xi,xj]T上,有Gx=[xi2+xj2,0]TGx=[\sqrt{x_{i}^{2}+x_{j}^{2}},0]^{T}Gx=[xi2+xj2,0]T,从而可以将一个二维向量的某一项变为0,将其用到QR分解中,对于矩阵
A=xxxxxxxxxxxxxxxxA=\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=1000010000c−s00scA=\begin{array}{cccc} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & c & -s\\ 0 & 0 & s & c \end{array} A=1000010000cs00sc使得GA=xxxxxxxxxxxx0xxxGA=\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变换也可以得到最终的上三角矩阵RRR,实现QR分解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值