跳到主要内容

QR 分解

1. 正交矩阵

设正交矩阵 QQ,则 QxQ\vec x 的 2-范数不变。

正交矩阵相当于对 x\vec x 进行了压缩

2. 正交三角分解

Am×nA_{m\times n} 的秩为 nn,则 AA 可以唯一地分解为 Am×n=Qm×nRn×nA_{m\times n} = Q_{m\times n}R_{n\times n},其中 QQ 为标准正交向量组矩阵,RR 为正线上三角阵。

3. Gram-Schimidt QR 分解

设矩阵 AA 的列向量为 a1,a2,,an\vec a_1, \vec a_2, \cdots, \vec a_n,则 Gram-Schimidt QR 分解的步骤如下:

3.1 获取正交基

u1=a1\vec u_1 = \vec a_1,接下来 u2=a2(u1,a2)(u1,u1)u1\vec u_2 =\vec a_2 - \frac{(\vec u_1,\vec a_2)}{(\vec u_1,\vec u_1)}\vec{u_1},...

以此类推,

uk=aki=1k1(ui,ak)(ui,ui)ui\vec u_k = \vec a_k - \sum_{i=1}^{k-1} \frac{(\vec u_i,\vec a_k)}{(\vec u_i,\vec u_i)}\vec{u_i}

3.2 归一化

ek=ukuk\vec e_k = \frac{\vec u_k}{\|\vec u_k\|},则 e1,e2,,en\vec e_1, \vec e_2, \cdots, \vec e_n 为正交标准基。故

Q=[e1,e2,,en]Q = [\vec e_1, \vec e_2, \cdots, \vec e_n]

3.3 求上三角阵

R=[e1Ta1e1Ta2e1Tan0e2Ta2e2Tan00enTan]R = \begin{bmatrix} \vec e_1^T\vec a_1 & \vec e_1^T\vec a_2 & \cdots & \vec e_1^T\vec a_n \\ 0 & \vec e_2^T\vec a_2 & \cdots & \vec e_2^T\vec a_n \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \vec e_n^T\vec a_n \end{bmatrix}

综上,A=QRA=QR

4. Household 反射法 QR 分解

设矩阵 A=(a1,a2,,an)A = (\vec a_1, \vec a_2, \cdots, \vec a_n),则 AA 的 QR 分解:

4.1 获取反射矩阵

e=(1,0,,0)\vec e = (1,0,\cdots, 0)

v1=a1+sgn(a11)a1e\vec v_1 = \vec a_1 + sgn(a_{11})\Vert\vec a_1\Vert \vec e

再将其归一化得 u1=vv\vec u_1 = \frac{\vec v}{\Vert\vec v\Vert}

则反射矩阵为

H1=I2u1u1TH_1 = I - 2\vec u_1 \vec u_1^T

4.2 更新矩阵

获得矩阵

H1A=[0A^]H_1A = \begin{bmatrix} * & * \\ 0 & \hat{A} \end{bmatrix}

4.3 迭代

A^\hat{A} 进行同样的操作,获得 H^2\hat H_2,进而取得矩阵

H2=[100H^2]H_2 = \begin{bmatrix} 1 & 0 \\ 0 & \hat H_2 \end{bmatrix}

反复迭代,有 HnHn1H2H1A=RH_nH_{n-1}\cdots H_2H_1 A = R

Q=k=1nHkTQ=\prod_{k=1}^{n}H_k^T