线性代数:矩阵的QR分解


对于一个矩阵,如果它的列向量之间线性无关,那么它就可以分解成 A = Q ⋅ R A = Q \cdot R A=QR
Q Q Q是一个标准正交矩阵
R R R是一个上三角形式的矩阵
矩阵 A A A A = Q ⋅ R A = Q \cdot R A=QR这种形式的分解称为 Q R 分解 QR分解 QR分解

获取一个列向量之间线性无关的矩阵 A A A的标准正交矩阵 Q Q Q,实际上就是对矩阵 A A A的列向量执行Gram-Schmidt过程,因为矩阵 A A A的列向量之间线性无关,所以可以把它们当成空间的一组基来处理。

QR分解实际上是Gram-Schmidt过程的逆过程:

Gram-Schmidt过程是给定空间的一组基求取空间的正交基的过程:
如果已知一组基: v ⃗ 1 , v ⃗ 2 , ⋯   , v ⃗ n \vec v_1 , \vec v_2 , \cdots , \vec v_n v 1,v 2,,v n,相应的求出这组基所代表的 n n n维空间的一组正交基的过程就是:
p ⃗ 1 = v ⃗ 1 \vec p_1 = \vec v_1 p 1=v 1
p ⃗ 2 = v ⃗ 2 − p ⃗ 1 ⋅ v ⃗ 2 ∥ p ⃗ 1 ∥ ⋅ p ⃗ 1 \vec p_2 = \vec v_2 - \frac {\vec p_1 \cdot \vec v_2}{\|{\vec p_1}\|} \cdot {\vec p_1} p 2=v 2p 1p 1v 2p 1
p ⃗ 3 = v ⃗ 3 − p ⃗ 1 ⋅ v ⃗ 3 ∥ p ⃗ 1 ∥ ⋅ p ⃗ 1 − p ⃗ 2 ⋅ v ⃗ 3 ∥ p ⃗ 2 ∥ ⋅ p ⃗ 2 \vec p_3 = \vec v_3 - \frac {\vec p_1 \cdot \vec v_3}{\|{\vec p_1}\|} \cdot {\vec p_1} - \frac {\vec p_2 \cdot \vec v_3}{\|{\vec p_2}\|} \cdot {\vec p_2} p 3=v 3p 1p 1v 3p 1p 2p 2v 3p 2
p ⃗ 4 = v ⃗ 4 − p ⃗ 1 ⋅ v ⃗ 4 ∥ p ⃗ 1 ∥ ⋅ p ⃗ 1 − p ⃗ 2 ⋅ v ⃗ 4 ∥ p ⃗ 2 ∥ ⋅ p ⃗ 2 − p ⃗ 3 ⋅ v ⃗ 4 ∥ p ⃗ 3 ∥ ⋅ p ⃗ 3 \vec p_4 = \vec v_4 - \frac {\vec p_1 \cdot \vec v_4}{\|{\vec p_1}\|} \cdot {\vec p_1} - \frac {\vec p_2 \cdot \vec v_4}{\|{\vec p_2}\|} \cdot {\vec p_2} - \frac {\vec p_3 \cdot \vec v_4}{\|{\vec p_3}\|} \cdot {\vec p_3} p 4=v 4p 1p 1v 4p 1p 2p 2v 4p 2p 3p 3v 4p 3

p ⃗ n = v ⃗ n − p ⃗ 1 ⋅ v ⃗ n ∥ p ⃗ 1 ∥ ⋅ p ⃗ 1 − p ⃗ 2 ⋅ v ⃗ n ∥ p ⃗ 2 ∥ ⋅ p ⃗ 2 − p ⃗ 3 ⋅ v ⃗ n ∥ p ⃗ 3 ∥ ⋅ p ⃗ 3 − ⋯ − p ⃗ n − 1 ⋅ v ⃗ n ∥ p ⃗ n − 1 ∥ ⋅ p ⃗ n − 1 \vec p_n = \vec v_n - \frac {\vec p_1 \cdot \vec v_n}{\|{\vec p_1}\|} \cdot {\vec p_1} - \frac {\vec p_2 \cdot \vec v_n}{\|{\vec p_2}\|} \cdot {\vec p_2} - \frac {\vec p_3 \cdot \vec v_n}{\|{\vec p_3}\|} \cdot {\vec p_3} - \cdots - \frac {\vec p_{n-1} \cdot \vec v_n}{\|{\vec p_{n-1}}\|} \cdot {\vec p_{n-1}} p n=v np 1p 1v np 1p 2p 2v np 2p 3p 3v np 3p n1p n1v np n1

对于矩阵 A A A通过Gram-Schmidt过程,就可以将列向量 v ⃗ 1 , v ⃗ 2 , ⋯   , v ⃗ n \vec v_1 , \vec v_2 , \cdots , \vec v_n v 1,v 2,,v n处理成一组正交向量组 p ⃗ 1 , p ⃗ 2 , ⋯   , p ⃗ n \vec p_1 , \vec p_2 , \cdots , \vec p_n p 1,p 2,,p n;
继续将正交向量组的向量进行规范化 u ^ = u ⃗ ∥ u ⃗ ∥ \hat u = \frac {\vec u}{\|\vec u\|} u^=u u 处理,最后就得到了矩阵的列向量的标准正交向量组 q ⃗ 1 , q ⃗ 2 , ⋯   , q ⃗ n \vec q_1 , \vec q_2 , \cdots , \vec q_n q 1,q 2,,q n
将这组标准正交向量组按列向量的方式排列就得到了标准正交矩阵 Q = (   ∣      ∣      ∣      ⋯     ∣ q ⃗ 1 , q ⃗ 2 , q ⃗ 3 , ⋯   , q ⃗ n   ∣      ∣      ∣      ⋯     ∣ ) Q= \left (\begin{array}{c}\ | \ \ \ \ |\ \ \ \ |\ \ \ \ \cdots \ \ \ | \\ \vec q_1,\vec q_2,\vec q_3,\cdots ,\vec q_n \\ \ | \ \ \ \ |\ \ \ \ |\ \ \ \ \cdots \ \ \ |\end{array} \right ) Q=                 q 1,q 2,q 3,,q n                

从Gram-Schmidt的逆过程推导矩阵的QR分解

在整个Gram-Schmidt过程中,每一步获取一个正交向量 p ⃗ i \vec p_i p i的时候, p ⃗ i \vec p_i p i可以和最后得到的 q ⃗ i \vec q_i q i存在联系 p ⃗ i = ∥ p ⃗ i ∥ ⋅ q ⃗ i \vec p_i = \|\vec p_i\| \cdot \vec q_i p i=p iq i,进而矩阵 A A A中原先的每个列向量 v ⃗ i \vec v_i v i就可以和 q ⃗ i \vec q_i q i建立联系:
A = Q R A = Q R A=QR
p ⃗ 1 = v ⃗ 1 = ∥ p ⃗ 1 ∥ ⋅ q ⃗ 1 = r 11 ⋅ q ⃗ 1 \vec p_1 = \vec v_1 = \|\vec p_1\| \cdot \vec q_1 = r_{11} \cdot \vec q_1 p 1=v 1=p 1q 1=r11q 1 ,其中 ∥ p ⃗ 1 ∥ \|\vec p_1\| p 1本身是个标量,这里就用 r 11 r_{11} r11代替;
∴ v ⃗ 1 = r 11 ⋅ q ⃗ 1 \therefore \vec v_1 = r_{11} \cdot \vec q_1 v 1=r11q 1 ← \leftarrow
p ⃗ 2 = v ⃗ 2 − p ⃗ 1 ⋅ v ⃗ 2 ∥ p ⃗ 1 ∥ ⋅ p ⃗ 1 = ∥ p ⃗ 2 ∥ ⋅ q ⃗ 2 \vec p_2 = \vec v_2 - \frac {\vec p_1 \cdot \vec v_2}{\|{\vec p_1}\|} \cdot {\vec p_1}= \|\vec p_2\| \cdot \vec q_2 p 2=v 2p 1p 1v 2p 1=p 2q 2
∴ v ⃗ 2 = ∥ p ⃗ 2 ∥ ⋅ q ⃗ 2 + p ⃗ 1 ⋅ v ⃗ 2 ∥ p ⃗ 1 ∥ ⋅ p ⃗ 1 \therefore \vec v_2 = \|\vec p_2\| \cdot \vec q_2 + \frac {\vec p_1 \cdot \vec v_2}{\|{\vec p_1}\|} \cdot {\vec p_1} v 2=p 2q 2+p 1p 1v 2p 1,这里 p ⃗ 1 \vec p_1 p 1用$ |\vec p_1| \cdot \vec q_1 $代入得下式
∴ v ⃗ 2 = ∥ p ⃗ 2 ∥ ⋅ q ⃗ 2 + p ⃗ 1 ⋅ v ⃗ 2 ∥ p ⃗ 1 ∥ ⋅ ∥ p ⃗ 1 ∥ ⋅ q ⃗ 1 \therefore \vec v_2 = \|\vec p_2\| \cdot \vec q_2 + \frac {\vec p_1 \cdot \vec v_2}{\|{\vec p_1}\|} \cdot { \|\vec p_1\| \cdot \vec q_1} v 2=p 2q 2+p 1p 1v 2p 1q 1
∴ v ⃗ 2 = r 21 q ⃗ 1 + r 22 q ⃗ 2 \therefore \vec v_2 =r_{21} \vec q_1 + r_{22} \vec q_2 v 2=r21q 1+r22q 2,上式的 ∥ p ⃗ 2 ∥ \| \vec p_2 \| p 2 p ⃗ 1 ⋅ v ⃗ 2 ∥ p ⃗ 1 ∥ ⋅ ∥ p ⃗ 1 ∥ \frac {\vec p_1 \cdot \vec v_2}{\|{\vec p_1}\|} \cdot { \|\vec p_1\|} p 1p 1v 2p 1 都是标量,用 r 22 , r 21 r_{22},r_{21} r22,r21 代替,简化表示出 v ⃗ 2 \vec v_2 v 2 q ⃗ 1 , q ⃗ 2 \vec q_1,\vec q_2 q 1q 2的关系; ← \leftarrow
p ⃗ 3 = v ⃗ 3 − p ⃗ 1 ⋅ v ⃗ 3 ∥ p ⃗ 1 ∥ ⋅ p ⃗ 1 − p ⃗ 2 ⋅ v ⃗ 3 ∥ p ⃗ 2 ∥ ⋅ p ⃗ 2 = ∥ p ⃗ 3 ∥ ⋅ q ⃗ 3 \vec p_3 = \vec v_3 - \frac {\vec p_1 \cdot \vec v_3}{\|{\vec p_1}\|} \cdot {\vec p_1} - \frac {\vec p_2 \cdot \vec v_3}{\|{\vec p_2}\|} \cdot {\vec p_2} = \|\vec p_3\| \cdot \vec q_3 p 3=v 3p 1p 1v 3p 1p 2p 2v 3p 2=p 3q 3
∴ v ⃗ 3 = ∥ p ⃗ 3 ∥ ⋅ q ⃗ 3 + p ⃗ 2 ⋅ v ⃗ 3 ∥ p ⃗ 2 ∥ ⋅ p ⃗ 2 + p ⃗ 1 ⋅ v ⃗ 3 ∥ p ⃗ 1 ∥ ⋅ p ⃗ 1 \therefore \vec v_3 = \|\vec p_3\| \cdot \vec q_3 + \frac {\vec p_2 \cdot \vec v_3}{\|{\vec p_2}\|} \cdot {\vec p_2} + \frac {\vec p_1 \cdot \vec v_3}{\|{\vec p_1}\|} \cdot {\vec p_1} v 3=p 3q 3+p 2p 2v 3p 2+p 1p 1v 3p 1
∴ v ⃗ 3 = r 31 ⋅ q ⃗ 1 + r 32 ⋅ q ⃗ 2 + r 33 ⋅ q ⃗ 3 \therefore \vec v_3 = r_{31}\cdot \vec q_1 + r_{32} \cdot \vec q_2 + r_{33} \cdot \vec q_3 v 3=r31q 1+r32q 2+r33q 3 ← \leftarrow
⋯ \cdots
持续执行上过程,就能反推得到矩阵 A A A中原先的每个列向量 v ⃗ i \vec v_i v i q ⃗ i \vec q_i q i的关系:
v ⃗ 1 = r 11 ⋅ q ⃗ 1 \vec v_1 = r_{11} \cdot \vec q_1 v 1=r11q 1
v ⃗ 2 = r 21 q ⃗ 1 + r 22 q ⃗ 2 \vec v_2 = r_{21} \vec q_1 + r_{22} \vec q_2 v 2=r21q 1+r22q 2
v ⃗ 3 = r 31 ⋅ q ⃗ 1 + r 32 ⋅ q ⃗ 2 + r 33 ⋅ q ⃗ 3 \vec v_3 = r_{31}\cdot \vec q_1 + r_{32} \cdot \vec q_2 + r_{33} \cdot \vec q_3 v 3=r31q 1+r32q 2+r33q 3
v ⃗ 4 = r 41 ⋅ q ⃗ 1 + r 42 ⋅ q ⃗ 2 + r 43 ⋅ q ⃗ 3 + r 44 ⋅ q ⃗ 4 \vec v_4 = r_{41}\cdot \vec q_1 + r_{42} \cdot \vec q_2 + r_{43} \cdot \vec q_3 + r_{44} \cdot \vec q_4 v 4=r41q 1+r42q 2+r43q 3+r44q 4
$\cdots $
v ⃗ n = r n 1 ⋅ q ⃗ 1 + r n 2 ⋅ q ⃗ 2 + r n 3 ⋅ q ⃗ 3 + ⋯ + r n n ⋅ q ⃗ n \vec v_n = r_{n1}\cdot \vec q_1 + r_{n2} \cdot \vec q_2 + r_{n3} \cdot \vec q_3 +\cdots + r_{nn} \cdot \vec q_n v n=rn1q 1+rn2q 2+rn3q 3++rnnq n

从而,对于矩阵 A A A的一组列向量 v ⃗ 1 , v ⃗ 2 , ⋯   , v ⃗ n \vec v_1 , \vec v_2 , \cdots , \vec v_n v 1,v 2,,v n,就可以由 r i j , q ⃗ i r_{ij} , \vec q_i rij,q i进行表示,重新排列成矩阵:
A = (    r 11 ⋅ q ⃗ 1 ,    r 21 q ⃗ 1 + r 22 q ⃗ 2 ,   ⋯   , r n 1 ⋅ q ⃗ 1 + r n 2 ⋅ q ⃗ 2 + r n 3 ⋅ q ⃗ 3 + ⋯ + r n n ⋅ q ⃗ n ) A= \left (\begin{array}{c} \ \ r_{11} \cdot \vec q_1 ,\ \ r_{21} \vec q_1 + r_{22} \vec q_2 ,\ \cdots \ , r_{n1}\cdot \vec q_1 + r_{n2} \cdot \vec q_2 + r_{n3} \cdot \vec q_3 +\cdots + r_{nn} \cdot \vec q_n \end{array} \right ) A=(  r11q 1,  r21q 1+r22q 2,  ,rn1q 1+rn2q 2+rn3q 3++rnnq n)

这个新组成的矩阵A,提出其中的 q ⃗ i \vec q_i q i向量,进而就表示成矩阵的 Q R QR QR分解形式:
A = ( q ⃗ 1     , q ⃗ 2     , ⋯   , q ⃗ n ) ⋅ [ r 11 r 21 r 31 ⋯ r n 1 0 r 22 r 32 ⋯ r n 2 0 0 r 33 ⋯ r n 3 0 0 0 ⋯ r n n ] = Q ⋅ R A= \left (\begin{array}{c} \vec q_1 \ \ \ , \vec q_2\ \ \ ,\cdots , \vec q_n \end{array} \right ) \cdot \begin{bmatrix} r_{11}&r_{21}&r_{31}&\cdots&r_{n1} \\ 0&r_{22}&r_{32}&\cdots&r_{n2} \\ 0&0&r_{33}&\cdots&r_{n3} \\ 0&0&0&\cdots&r_{nn} \end{bmatrix} = Q \cdot R A=(q 1   ,q 2   ,,q n) r11000r21r2200r31r32r330rn1rn2rn3rnn =QR
Q = ( q ⃗ 1     , q ⃗ 2     , ⋯   , q ⃗ n ) Q = \left (\begin{array} {c} \vec q_1 \ \ \ , \vec q_2\ \ \ ,\cdots , \vec q_n \end{array} \right ) Q=(q 1   ,q 2   ,,q n)

R = [ r 11 r 21 r 31 ⋯ r n 1 0 r 22 r 32 ⋯ r n 2 0 0 r 33 ⋯ r n 3 0 0 0 ⋯ r n n ] R = \begin{bmatrix} r_{11}&r_{21}&r_{31}&\cdots&r_{n1} \\ 0&r_{22}&r_{32}&\cdots&r_{n2} \\ 0&0&r_{33}&\cdots&r_{n3} \\ 0&0&0&\cdots&r_{nn} \end{bmatrix} R= r11000r21r2200r31r32r330rn1rn2rn3rnn


获取矩阵的 Q Q Q矩阵和 R R R矩阵

通过上面的推导过程可知Gram-Schmidt过程得到了矩阵 A A A的Q矩阵,再逆推导就能得到R矩阵。
但是对于一个列向量之间线性无关的矩阵 A A A,它能够进行QR分解,其实就有:
A = Q R = Q − 1 ⋅ A = Q − 1 Q ⋅ R = R A = QR = Q^{-1} \cdot A = Q^{-1} Q \cdot R = R A=QR=Q1A=Q1QR=R
∵ Q T ⋅ Q = I → Q 1 = Q T \because Q^T \cdot Q= I \to Q^{1} = Q^{T} QTQ=IQ1=QT,Q是标准正交矩阵,所以根本不需要通过计算来求矩阵Q的逆
R = Q − 1 A = Q T ⋅ A R = Q^{-1} A = Q^{T} \cdot A R=Q1A=QTA

所以QR分解一个矩阵 A A A,其实只需要进行一边正向Gram-Schmidt过程求出矩阵 A A A的列向量的标准正交向量组;


QR分解的应用

主要还是用于加速线性系统的求解

对于 A x = b Ax=b Ax=b, A = Q R A=QR A=QR,
( Q R ) x = b (QR)x = b (QR)x=b
Q − 1 ( Q R ) x = Q − 1 b Q^{-1}(QR)x = Q^{-1}b Q1(QR)x=Q1b
R x = Q T b Rx = Q^{T}b Rx=QTb

求解过程中,只需要求解出矩阵A的Q矩阵,同时R矩阵又是一个上三角矩阵,从而降低了求解的时间复杂度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倪桦

有帮助的话请杯咖啡吧,谢谢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值