QR 分解
将学习到什么
介绍了平面旋转矩阵,Householder 矩阵和 QR 分解以入相关性质.
预备知识
平面旋转与 Householder 矩阵是特殊的酉矩阵,它们在建立某些基本的矩阵分解过程中起着重要的作用。
平面旋转
设 \(1 \leqslant i < j \leqslant n\),称
为平面旋转或者 Givens 旋转.
容易验证对任何一对指数 \(i,j,(1 \leqslant i < j \leqslant n)\) 以及任何参数 \(\theta \in [0,2\pi)\), \(U(\theta;i,j) \in M_n(\mathbb{R})\) 都是实正交的. 矩阵 \(U(\theta;i,j)\) 在 \(\mathbb{R}^n\) 的 \(i,j\) 坐标平面上执行一个旋转(旋转任意角度 \(\theta\)). 用 \(U(\theta;i,j)\) 左乘只影响被乘的矩阵的第 \(i\) 行和第 \(j\) 行,而用 \(U(\theta;i,j)\) 右乘只影响被乘的矩阵的第 \(i\) 列和第 \(j\) 列. 而且 用 \(U(\theta;i,j)^{-1}=U(\theta;i,j)^{T}=U(-\theta;i,j)\).
Householder 矩阵
它有几个很好的性质:
- 由于 \(U_{\omega}^*=I-2(\omega^*\omega)^{-1}(\omega\omega^*)^*=I-2(\omega^*\omega)^{-1}\omega\omega^*=U_{\omega}\), 所以 \(U_{\omega}\) 是 Hermite 矩阵. 又由于 \(U_{\omega} \cdot U_{\omega}=I\) ,所以 \(U_{\omega}\) 是酉矩阵且 \(U_{\omega}^{-1}= U_{\omega}\).
- Householder 矩阵 \(U_{\omega}\) 在子空间 \(\omega^{\perp}\) 上的作用是恒等元,即如果 \(x \in \omega^{\perp}\), 就有 \(U_{\omega}x=x\).
- Householder 矩阵 \(U_{\omega}\) 在子空间 \(\mathrm{span}(\omega)\) 上的作用是反射,即 \(U_{\omega} \cdot \omega=-\omega\).
- \(\mathrm{det}\,U_{\omega}=-1\). 由秩一扰动的行列式公式知 \(\mathrm{det}\,U_{\omega}=1-2(\omega^*\omega)^{-1}\omega^* I \cdot \omega=-1\). 由 Brauer 定理知,它的特征值是 \(-1,1,1\cdots\). 于是,对所有 \(n\) 以及每个非零的 \(\omega \in \mathbb{R}^n\), Householder 矩阵 \(U_{\omega} \in M_n(\mathbb{R})\) 是实正交矩阵,但不是真旋转矩阵(真旋转矩阵是行列式为 \(+1\) 的实正交矩阵)
- 设 \(n\geqslant 2\), 并设 \(x,y\in \mathbb{R}^n\) 是单位向量. 如果 \(x=y\), 令 \(\omega\) 是任意一个与 \(x\) 正交的实单位向量. 如果 \(x \neq y\), 令 \(\omega=x-y\). 此时有 \(\omega^*\omega=2(1-x^*y),\omega^*x=1-x^*y\), 所以 \(U_{\omega}x=y\). 事实上,任意的 \(x\in \mathbb{R}^n\) 可以由实的 Householder 矩阵变换成任何一个满足 \(\lVert x\rVert _2=\lVert y\rVert _2\) 的向量 \(y \in \mathbb{R}^n\). 但是在 \(\mathbb{C}^n\) 中不一样,不存在 \(\omega \in \mathbb{C}^n\) 使得 \(U_{\omega} e_1=\mathrm{i}e_1\).
Householder 矩阵以及纯量酉矩阵可以用来构造一个酉矩阵,它将 \(\mathbb{C}^n\) 中任意给定的向量变换成 \(\mathbb{C}^n\) 中有同样 Euclid 范数的另外任意一个向量。
证明: (A 是本性 Hermite 的是指存在 \(\theta \in \mathbb{R}\) 使 \(\mathrm{e}^{\mathrm{i}\theta}A\) 是 Hermite 的).
如果 \(x\) 与 \(y\) 线性相关的(也就是说,如果对某个实的 \(\theta\) 有 \(y=\mathrm{e}^{\mathrm{i}\theta}x\)), 这些结论容易验证. 如果 \(x\) 与 \(y\) 线性无关,由 Cauchy-Schwartz 不等式确保有 \(x^*x\neq \vert x^*y\rvert\). 计算
\begin{align}
\omega^*\omega &=(\mathrm{e}^{\mathrm{i}\phi}x-y)^*(\mathrm{e}^{\mathrm{i}\phi}x-y)=x^*x-\mathrm{e}^{-\mathrm{i}\phi}x^*y-\mathrm{e}^{\mathrm{i}\phi}y^*x+y^*y \notag \\
&=2(x^*x-\mathrm{Re}(\mathrm{e}^{-\mathrm{i}\phi}x^*y)) \notag \\
&= 2(x^*x-\vert x^*y\rvert) \notag
\end{align}
和
\begin{align}
\omega^*x= \mathrm{e}^{-\mathrm{i}\phi}x^*x-y^*x=\mathrm{e}^{-\mathrm{i}\phi}x^*x-\mathrm{e}^{-\mathrm{i}\phi}\vert y^*x\rvert=\mathrm{e}^{-\mathrm{i}\phi}(x^*x-\vert x^*y\rvert)) \notag
\end{align}
最后计算
\begin{align}
\mathrm{e}^{\mathrm{i}\phi}U_{\omega}x=\mathrm{e}^{\mathrm{i}\phi}(x-2(\omega^*\omega)^{-1}\omega \omega^* x)=\mathrm{e}^{\mathrm{i}\phi}(x-(\mathrm{e}^{\mathrm{i}\phi}x-y)\mathrm{e}^{-\mathrm{i}\phi})=y \notag
\end{align}
如果 \(z\) 与 \(x\) 正交,那么 \(\omega^*z=-y^*z\), 且
\begin{align}
y^*U(y,x)z &=\mathrm{e}^{\mathrm{i}\phi} \bigg( y^*z-\frac{1}{\lVert x \rVert _2^2-\vert x^*y\rvert)} (\mathrm{e}^{\mathrm{i}\phi}y^*x-\lVert y \rVert _2^2) (-y^*x) \bigg) \notag \\
&= \mathrm{e}^{\mathrm{i}\phi} ( y^*z+(-y^*x))=0 \notag
\end{align}
说明了变换不仅保证了范数不变,还保持了正交不变性. 由于 \(U_{\omega}\) 是酉矩阵,且是 Hermite 矩阵,故而 \(U(y,x)=(\mathrm{e}^{\mathrm{i}\phi}I)U_{\omega}\) 是酉矩阵(它是两个酉矩阵的乘积),且是 Hermite 的.
如果 \(y\in\mathbb{C}^n\) 是已知的单位向量,按上述方法构造的 \(U(y,e_1)\) 的第一列肯定是 \(y\), 由于 \(U(y,e_1)\cdot e_1=y\).
QR 分解
复矩阵或者实矩阵的 QR 分解在理论上与计算上都有相当的重要性.
证明: 设 \(a_1 \in \mathbb{C}^n\) 是 \(A\) 的第一列,\(r_1=\lVert a_1\rVert_2\), 又设 \(U_1\) 是一个酉矩阵,它使得 \(U_1a_1=r_1e_1\), 上个定理 (1.1) 对这样的矩阵给出了一个明显的构造,它或者是一个纯量的酉矩阵,或者是一个纯量的酉矩阵与一个 Householder 矩阵的乘积. 分划
\begin{align}
U_1A=\begin{bmatrix}
r_1 & \bigstar \\ 0 & A_2
\end{bmatrix} \notag
\end{align}
其中 \(A_2\in M_{n-1,m-1}\). 设 \(a_2\in \mathbb{C}^{n-1}\) 是 \(A_2\) 的第一列,并令 \(r_2=\lVert a_2\rVert_2\). 再次利用定理 (1.1) 来构造一个酉矩阵 \(V_2 \in M_{n-1}\), 使得 \(V_2a_2=r_2e_1\), 再令 \(U_2=I_1\oplus V_2\). 那么
\begin{align}
U_2U_1A=\begin{bmatrix}
r_1 & & \bigstar \\ 0 & r_2 & \\ 0 & 0 & A_3
\end{bmatrix} \notag
\end{align}
重复这一结构 \(m\) 次就得到
\begin{align}
U_mU_{m-1}\cdots U_2U_1A=\begin{bmatrix}
R \\ 0
\end{bmatrix} \notag
\end{align}
其中 \(R\in M_m\) 是上三角的,其主对角元素是 \(r_1,\cdots,r_m\), 它们全都是非负的. 设 \(U=U_mU_{m-1}\cdots U_2U_1\). 分划 \(U^*=U_1^*U_2^*\cdots U_{m-1}^*U_m^*=[Q\quad Q_2]\), 其中 \(Q \in M_{n,m}\) 的列是标准正交的(它包含了一个酉矩阵的前 \(m\) 个列). 这样就有 \(A=QR\). 如所希望的那样. 如果 \(A\) 是列满秩的,则 \(R\) 是非奇异的,所以它的主对角线元素全是正的.
假设 \(\mathrm{rank}\, A=m\), 且 \(A=QR=\tilde{Q}\tilde{R}\), 其中 \(R\) 与 \(\tilde{R}\) 是上三角的且有正的主对角元素,而 \(Q\) 与 \(\tilde{Q}\) 都标准正交的列向量. 那么 \(A^*A=R^*(Q^*Q)R)=R^*IR=R^*R\), 且还有 \(A^*A=\tilde{R}^*\tilde{R}\), 所以 \(R^*R=\tilde{R}^*\tilde{R}\) 且 \(\tilde{R}^{-*}R^*=\tilde{R}R^{-1}\). 也就是说下三角阵等于一个上三角矩阵,所以它们两者必定都是对角矩阵:\(\tilde{R}R^{-1}=D\) 是对角的,且它必定有正的主对角元素,这是因为 \(\tilde{R}\) 与 \(R^{-1}\) 这两者的主对角元素都是正的. 但是 \(\tilde{R}=DR\) 蕴含 \(D=\tilde{R}R^{-1}=\tilde{R}^{-*}R^*=(DR)^{-*}R^*=D^{-1}R^{-*}R^*=D^{-1}\), 所以 \(D^2=I\), 从而 \(D=I\). 所以有 \(\tilde{R}=R\) 以及 \(\tilde{Q}=Q\).
(c) 中的结论由列向量标准正交的方阵是酉矩阵这一事实推出.
如果 (d) 中有 \(n \geqslant m\), 我们可以从 (a) 中的分解开始,设 \(\tilde{Q}=[Q\quad Q_2] \in M_n\) 是酉矩阵,令 \(\tilde{R}=\begin{bmatrix} R \\ 0 \end{bmatrix} \in M_{n,m}\), 并注意到 \(A=QR=\tilde{Q}\tilde{R}\). 如果 \(n<m\), 我们就可以采用 (a) 中的构造(用 Householder 变换的一列纯量倍数左乘)并在 \(n\) 步后停止,这时就得到分解式 \(U_n\cdots U_1A=[R\quad \bigstar]\), 而 \(R\) 是上三角的. \(\bigstar\) 这个块中的元素不一定为零.
最后的结论 (e) 从定理 (1.1) 中的如下结论推出:(a) 与 (d) 的结构中所包含的酉矩阵 \(U_i\) 可以全部取为实矩阵.
任何形如 \(B=A^*A\) 的 \(B\in M_n(A\in M_n)\) 可以写成 \(B=LL^*\), 其中 \(L \in M_n\) 是下三角矩阵,且有非负的对角元素. 如果 \(A\) 是非奇异的,这个分解是唯一的. 其实这是 \(B\) 的 Cholesky 分解,每一个正定的或半正定的矩阵都可以用这种方式进行分解.
\(A\in M_{n,m}\) 的 QR 分解得到的变量有时很有用. 假设 \(n \leqslant m\), 并令 \(A^*=QR\), 其中 \(Q \in M_{n,m}\) 有标准正交的列,而 \(R\in M_m\) 是上三角的. 这样,\(A=R^*Q^*\) 就是形如
\begin{align}
A=LQ
\end{align}
的一个分解,其中 \(Q\in M_{n,m}\) 有标准正交的行,且 \(L\in M_n\) 是下三角的. 如果 \(\tilde{Q}=\begin{bmatrix} Q \\ \tilde{Q}_2 \end{bmatrix}\) 是酉矩阵,我们就有形如
\begin{align}
A=\begin{bmatrix} L & 0 \end{bmatrix} \tilde{Q}
\end{align}
的分解.
我们举个例子,对矩阵 \(A=\begin{bmatrix} 1 & 1 & 1 \\ 2 & -1 & -1 \\ 2 & -4 & 5 \end{bmatrix}\) 进行 QR 分解. 按照上述证明过程,先拿出矩阵 \(A\) 的第一列 \(a_1=[1,2,3]^T\),求出 \(\lVert a_1 \rVert_2=3\),现在要求一个酉矩阵 \(U_1\) 使得 \(U_1a_1=3e_1\). 按照定理 1 计算 \(a_1^*\cdot 3e_1=3\) 是正号,所以 \(w=a_1-3e_1=[-2,2,2]^T\). 归一化得 \(w=[-1/\sqrt{3},1/\sqrt{3},1/\sqrt{3}]^T\), 计算酉矩阵 \(U_1=I-2ww^*=\frac{1}{3}\begin{bmatrix} 1 & 2 & 2 \\ 2 & 1 & -2 \\ 2 & -2 & 1 \end{bmatrix}\), 计算 \(U_1A=\begin{bmatrix} 3 & -3 & -3 \\ 0 & 3 & -3 \\ 0 & 0 & 3 \end{bmatrix}=R\). 我们运气比较好,直接变成上三角了,否则重复上述步骤,此时就完成了 QR 分解,由于是实数域,故 \(U_1^{-1}=U_1^T\), 所以 \(A=U_1^TR\).
一个重要的几何事实是:任何两个有相同个数的标准正交向量组都通过酉变换联系在一起.
证明: 将标准正交向量 \([x_1 \,\,\cdots \,\,x_k]\) 与 \(Y=[y_1 \,\,\cdots \,\,y_k]\) 中的每一个都通过 Gram-Schmidt 扩充为 \(\mathbb{C}^n\) 的一组标准正交基,也就是构造酉矩阵 \(V=[X\quad X_2]\) 以及 \(W=[Y\quad Y_2]\in M_n\). 那么 \(U=WV^*\) 是酉矩阵,且 \([Y\quad Y_2]=W=UV=[UX \quad UX_2]\), 所以 \(Y=UX\). 如果 \(X\) 与 \(Y\) 是实的,则矩阵 \([X\quad X_2]\) 与 \([Y\quad Y_2]\) 可以选为实的正交矩阵(它们的列是 \(\mathbb{R}^n\) 的标准正交基).
读完应该知道什么
- 平面旋转与 Householder 矩阵是特殊的酉矩阵
- Householder 矩阵的特征值是 \(-1,1,1\cdots\), 所以其行列式为 -1
- Householder 矩阵以及纯量酉矩阵可以用来构造一个酉矩阵,它将 \(\mathbb{C}^n\) 中任意给定的向量变换成 \(\mathbb{C}^n\) 中有同样 Euclid 范数的另外任意一个向量。
- QR 分解
QR 分解的更多相关文章
- 机器学习中的矩阵方法03:QR 分解
1. QR 分解的形式 QR 分解是把矩阵分解成一个正交矩阵与一个上三角矩阵的积.QR 分解经常用来解线性最小二乘法问题.QR 分解也是特定特征值算法即QR算法的基础.用图可以将分解形象地表示成: 其 ...
- QR分解
从矩阵分解的角度来看,LU和Cholesky分解目标在于将矩阵转化为三角矩阵的乘积,所以在LAPACK种对应的名称是trf(Triangular Factorization).QR分解的目的在 ...
- QR分解与最小二乘
主要内容: 1.QR分解定义 2.QR分解求法 3.QR分解与最小二乘 4.Matlab实现 一.QR分解 R分解法是三种将矩阵分解的方式之一.这种方式,把矩阵分解成一个正交矩阵与一个上三角矩阵的 ...
- QR分解与最小二乘(转载自AndyJee)
转载网址:http://www.cnblogs.com/AndyJee/p/3846455.html 主要内容: 1.QR分解定义 2.QR分解求法 3.QR分解与最小二乘 4.Matlab实现 一. ...
- QR分解迭代求特征值——原生python实现(不使用numpy)
QR分解: 有很多方法可以进行QR迭代,本文使用的是Schmidt正交化方法 具体证明请参考链接 https://wenku.baidu.com/view/c2e34678168884868762d6 ...
- 矩阵QR分解
1 orthonormal 向量与 Orthogonal 矩阵 orthonormal 向量定义为 ,任意向量 相互垂直,且模长为1: 如果将 orthonormal 向量按列组织成矩阵,矩阵为 ...
- 【矩阵】RQ/QR 分解
Multiple View Geometry in Computer Vision A.4.1.1 (page 579) 将一个 3x3 矩阵 $ A $ 进行 RQ 分解是将其分解成为一个上三角阵 ...
- 矩阵的QR分解
#include <cstdio> #include <cstdlib> #include <algorithm> #include <cmath> # ...
- 【matlab】 QR分解 求矩阵的特征值
"QR_H.m" function [Q,R] = QR_tao(A) %输入矩阵A %输出正交矩阵Q和上三角矩阵R [n,n]=size(A); E = eye(n); X = ...
随机推荐
- CodeForces - 566D Restructuring Company 并查集的区间合并
Restructuring Company Even the most successful company can go through a crisis period when you have ...
- unity3d读写txt
http://www.cnblogs.com/sunet/p/3851353.html?utm_source=tuicool 记录一下昨天用到的技术点:基于android平台unity3d读写txt. ...
- 洛谷 P1712 [NOI2016]区间(线段树)
传送门 考虑将所有的区间按长度排序 考虑怎么判断点被多少区间覆盖,这个可以离散化之后用一棵权值线段树来搞 然后维护两个指针$l,r$,当被覆盖次数最多的点的覆盖次数小于$m$时不断右移$r$,在覆盖次 ...
- Spring Boot Autowirted注入找不到Bean对象解决方法
报错:Consider defining a bean of type 'xxxxxxxxxxxxx' in your configuration 1. 你应该在 ApplyApplication 启 ...
- Python学习 Part2:深入Python函数定义
在Python中,可以定义包含若干参数的函数,这里有几种可用的形式,也可以混合使用: 1. 默认参数 最常用的一种形式是为一个或多个参数指定默认值. >>> def ask_ok(p ...
- bzoj1142:[POI2009]Tab
传送门 考虑每次交换都不会改变每个数所在的行和列(不是指编号,而是指和它在同一行或者同一列的数不会发生变化) 由于每个数互不相同,所以记录下每个数所在的行和列,暴力判断就好了 代码: #include ...
- go系列(2)- go框架beego以及命令bee的使用
上篇写了go的安装和GOPATH的配置,linux下go的安装 ,现在就看看如何用框架. 1.进入GOPATH的目录 cd /data/work/go 2.下载beego,通过go get go ge ...
- 使用nvmw解决windows下多版本node共存的问题
不支持4.x的nodejs,用nodist吧 不支持4.x的nodejs,用nodist吧 不支持4.x的nodejs,用nodist吧 ===========不要再看的分割线============ ...
- html文本框和按钮这些点击时不显示边框的光晕
直接在样式加:focus{outline:0;}这样子就可以了
- java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
在往数据库添加数据需要判断数据库中是否已有记录,判断的返回结果通常是List.在List为空的情况下,调用其方法需要格外注意,例如:调用get()则会报下标越界的异常. 当然还可以联想到其他情况,当判 ...