
对于一个矩阵,如果它的列向量之间线性无关,那么它就可以分解成A=Q⋅RA = Q \cdot RA=Q⋅R。
QQQ是一个标准正交矩阵
RRR是一个上三角形式的矩阵
矩阵AAA的A=Q⋅RA = Q \cdot RA=Q⋅R这种形式的分解称为 QR分解QR分解QR分解。
获取一个列向量之间线性无关的矩阵AAA的标准正交矩阵QQQ,实际上就是对矩阵AAA的列向量执行Gram-Schmidt过程,因为矩阵AAA的列向量之间线性无关,所以可以把它们当成空间的一组基来处理。
QR分解实际上是Gram-Schmidt过程的逆过程:
Gram-Schmidt过程是给定空间的一组基求取空间的正交基的过程:
如果已知一组基:v⃗1,v⃗2,⋯ ,v⃗n\vec v_1 , \vec v_2 , \cdots , \vec v_nv1,v2,⋯,vn,相应的求出这组基所代表的nnn维空间的一组正交基的过程就是:
p⃗1=v⃗1\vec p_1 = \vec v_1p1=v1
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}p2=v2−∥p1∥p1⋅v2⋅p1
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}p3=v3−∥p1∥p1⋅v3⋅p1−∥p2∥p2⋅v3⋅p2
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}p4=v4−∥p1∥p1⋅v4⋅p1−∥p2∥p2⋅v4⋅p2−∥p3∥p3⋅v4⋅p3
…
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}}pn=vn−∥p1∥p1⋅vn⋅p1−∥p2∥p2⋅vn⋅p2−∥p3∥p3⋅vn⋅p3−⋯−∥pn−1∥pn−1⋅vn⋅pn−1
对于矩阵AAA通过Gram-Schmidt过程,就可以将列向量v⃗1,v⃗2,⋯ ,v⃗n\vec v_1 , \vec v_2 , \cdots , \vec v_nv1,v2,⋯,vn处理成一组正交向量组p⃗1,p⃗2,⋯ ,p⃗n\vec p_1 , \vec p_2 , \cdots , \vec p_np1,p2,⋯,pn;
继续将正交向量组的向量进行规范化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_nq1,q2,⋯,qn
将这组标准正交向量组按列向量的方式排列就得到了标准正交矩阵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= ∣ ∣ ∣ ⋯ ∣q1,q2,q3,⋯,qn ∣ ∣ ∣ ⋯ ∣
从Gram-Schmidt的逆过程推导矩阵的QR分解
在整个Gram-Schmidt过程中,每一步获取一个正交向量p⃗i\vec p_ipi的时候,p⃗i\vec p_ipi可以和最后得到的q⃗i\vec q_iqi存在联系p⃗i=∥p⃗i∥⋅q⃗i\vec p_i = \|\vec p_i\| \cdot \vec q_ipi=∥pi∥⋅qi,进而矩阵AAA中原先的每个列向量v⃗i\vec v_ivi就可以和q⃗i\vec q_iqi建立联系:
A=QRA = Q RA=QR
p⃗1=v⃗1=∥p⃗1∥⋅q⃗1=r11⋅q⃗1\vec p_1 = \vec v_1 = \|\vec p_1\| \cdot \vec q_1 = r_{11} \cdot \vec q_1p1=v1=∥p1∥⋅q1=r11⋅q1 ,其中∥p⃗1∥\|\vec p_1\|∥p1∥本身是个标量,这里就用r11r_{11}r11代替;
∴v⃗1=r11⋅q⃗1\therefore \vec v_1 = r_{11} \cdot \vec q_1∴v1=r11⋅q1 ←\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_2p2=v2−∥p1∥p1⋅v2⋅p1=∥p2∥⋅q2
∴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}∴v2=∥p2∥⋅q2+∥p1∥p1⋅v2⋅p1,这里p⃗1\vec p_1p1用$ |\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}∴v2=∥p2∥⋅q2+∥p1∥p1⋅v2⋅∥p1∥⋅q1
∴v⃗2=r21q⃗1+r22q⃗2\therefore \vec v_2 =r_{21} \vec q_1 + r_{22} \vec q_2∴v2=r21q1+r22q2,上式的∥p⃗2∥\| \vec p_2 \|∥p2∥ 和 p⃗1⋅v⃗2∥p⃗1∥⋅∥p⃗1∥\frac {\vec p_1 \cdot \vec v_2}{\|{\vec p_1}\|} \cdot { \|\vec p_1\|}∥p1∥p1⋅v2⋅∥p1∥ 都是标量,用 r22,r21r_{22},r_{21}r22,r21 代替,简化表示出v⃗2\vec v_2v2与q⃗1,q⃗2\vec q_1,\vec q_2q1,q2的关系;←\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_3p3=v3−∥p1∥p1⋅v3⋅p1−∥p2∥p2⋅v3⋅p2=∥p3∥⋅q3
∴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}∴v3=∥p3∥⋅q3+∥p2∥p2⋅v3⋅p2+∥p1∥p1⋅v3⋅p1
∴v⃗3=r31⋅q⃗1+r32⋅q⃗2+r33⋅q⃗3\therefore \vec v_3 = r_{31}\cdot \vec q_1 + r_{32} \cdot \vec q_2 + r_{33} \cdot \vec q_3∴v3=r31⋅q1+r32⋅q2+r33⋅q3 ←\leftarrow←
⋯\cdots ⋯
持续执行上过程,就能反推得到矩阵AAA中原先的每个列向量v⃗i\vec v_ivi和q⃗i\vec q_iqi的关系:
v⃗1=r11⋅q⃗1\vec v_1 = r_{11} \cdot \vec q_1v1=r11⋅q1
v⃗2=r21q⃗1+r22q⃗2\vec v_2 = r_{21} \vec q_1 + r_{22} \vec q_2v2=r21q1+r22q2
v⃗3=r31⋅q⃗1+r32⋅q⃗2+r33⋅q⃗3\vec v_3 = r_{31}\cdot \vec q_1 + r_{32} \cdot \vec q_2 + r_{33} \cdot \vec q_3v3=r31⋅q1+r32⋅q2+r33⋅q3
v⃗4=r41⋅q⃗1+r42⋅q⃗2+r43⋅q⃗3+r44⋅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_4v4=r41⋅q1+r42⋅q2+r43⋅q3+r44⋅q4
$\cdots $
v⃗n=rn1⋅q⃗1+rn2⋅q⃗2+rn3⋅q⃗3+⋯+rnn⋅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_nvn=rn1⋅q1+rn2⋅q2+rn3⋅q3+⋯+rnn⋅qn从而,对于矩阵AAA的一组列向量v⃗1,v⃗2,⋯ ,v⃗n\vec v_1 , \vec v_2 , \cdots , \vec v_nv1,v2,⋯,vn,就可以由rij,q⃗ir_{ij} , \vec q_irij,qi进行表示,重新排列成矩阵:
A=( r11⋅q⃗1, r21q⃗1+r22q⃗2, ⋯ ,rn1⋅q⃗1+rn2⋅q⃗2+rn3⋅q⃗3+⋯+rnn⋅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=( r11⋅q1, r21q1+r22q2, ⋯ ,rn1⋅q1+rn2⋅q2+rn3⋅q3+⋯+rnn⋅qn)这个新组成的矩阵A,提出其中的q⃗i\vec q_iqi向量,进而就表示成矩阵的QRQRQR分解形式:
A=(q⃗1 ,q⃗2 ,⋯ ,q⃗n)⋅[r11r21r31⋯rn10r22r32⋯rn200r33⋯rn3000⋯rnn]=Q⋅RA= \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 RA=(q1 ,q2 ,⋯,qn)⋅r11000r21r2200r31r32r330⋯⋯⋯⋯rn1rn2rn3rnn=Q⋅R
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=(q1 ,q2 ,⋯,qn)R=[r11r21r31⋯rn10r22r32⋯rn200r33⋯rn3000⋯rnn]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=r11000r21r2200r31r32r330⋯⋯⋯⋯rn1rn2rn3rnn
获取矩阵的QQQ矩阵和RRR矩阵
通过上面的推导过程可知Gram-Schmidt过程得到了矩阵AAA的Q矩阵,再逆推导就能得到R矩阵。
但是对于一个列向量之间线性无关的矩阵AAA,它能够进行QR分解,其实就有:
A=QR=Q−1⋅A=Q−1Q⋅R=RA = QR = Q^{-1} \cdot A = Q^{-1} Q \cdot R = RA=QR=Q−1⋅A=Q−1Q⋅R=R
又∵QT⋅Q=I→Q1=QT\because Q^T \cdot Q= I \to Q^{1} = Q^{T}∵QT⋅Q=I→Q1=QT,Q是标准正交矩阵,所以根本不需要通过计算来求矩阵Q的逆
R=Q−1A=QT⋅AR = Q^{-1} A = Q^{T} \cdot AR=Q−1A=QT⋅A
所以QR分解一个矩阵AAA,其实只需要进行一边正向Gram-Schmidt过程求出矩阵AAA的列向量的标准正交向量组;
QR分解的应用
主要还是用于加速线性系统的求解
对于Ax=bAx=bAx=b, A=QRA=QRA=QR,
(QR)x=b(QR)x = b(QR)x=b
Q−1(QR)x=Q−1bQ^{-1}(QR)x = Q^{-1}bQ−1(QR)x=Q−1b
Rx=QTbRx = Q^{T}bRx=QTb求解过程中,只需要求解出矩阵A的Q矩阵,同时R矩阵又是一个上三角矩阵,从而降低了求解的时间复杂度。
3803

被折叠的 条评论
为什么被折叠?



