4.4. 正交三角分解

4.4.1. 什么是正交三角分解

正交三角分解 ( Orthogonal Triangular Decomposition ), 是指将一矩阵分解正 (酉) 交矩阵 Q{\bm Q} 与非奇异上三角矩阵 R{\bm R} 两个矩阵的乘积的分解.

Definition 4.3 (正交三角分解)

ACm×n{\bm A} \in {\mathbb C}_{m\times n} , 若存在矩阵 QC{\bm Q} \in {\mathbb C}RC{\bm R} \in {\mathbb C} 使得

Am×n=Qm×nRn×n{\bm A}_{m\times n} = {\bm Q}_{m\times n} {\bm R}_{n\times n}

则称上述分解为 正交三角分解 , 简称 QR 分解 .

4.4.2. 求解方法

Schmidt 正交化方法

对矩阵 ACm×n{\bm A} \in {\mathbb C}_{m\times n} 进行QR分解的步骤如下:

  1. 记矩阵 A=(a1,a2,,an){\bm A} = ({\bm a}_1, {\bm a}_2, \cdots, {\bm a}_n) , 其中 aj{\bm a}_j 为矩阵 A{\bm A} 的第 jj 列;

  2. 正交化向量组 a1,a2,,an{\bm a}_1, {\bm a}_2, \cdots, {\bm a}_n , 得正交化后的向量组 b1,b2,,bn{\bm b}_1, {\bm b}_2, \cdots, {\bm b}_n ;

  3. 单位化向量组 b1,b2,,bn{\bm b}_1, {\bm b}_2, \cdots, {\bm b}_n , 得单位化后的向量组 q1,q2,,qn{\bm q}_1, {\bm q}_2, \cdots, {\bm q}_n , 其中 qj=1bjbj{\bm q}_j = \frac{1}{|{\bm b}_j|}{\bm b}_j , j=1,2,,nj = 1, 2, \cdots, n ;

  4. 将正交化的向量组按顺序组成矩阵 Q=(q1,q2,,qn){\bm Q} = ({\bm q}_1, {\bm q}_2, \cdots, {\bm q}_n) ;

  5. 计算上三角矩阵 R=diag(b1,b2,,bn)C{\bm R} = {\rm diag}(|{\bm b}_1|, |{\bm b}_2|, \cdots, |{\bm b}_n|) \cdot {\bm C} ;

其中,

C=[1k21kn11kn21]{\bm C} = \left[ {\begin{array}{cccc} {\rm{1}}&{{k_{21}}}& \cdots &{{k_{n1}}}\\ {}&1& \cdots &{{k_{n2}}}\\ {}&{}& \ddots &{}\\ {}&{}&{}&1 \end{array}} \right]

kij=aibjbjbjk_{ij} = \frac{\left\langle {\bm a}_i{\bm b}_j \right\rangle}{\left\langle {\bm b}_j{\bm b}_j \right\rangle} , j<ij < i .

注解

举个例子, 求如下矩阵的QR分解,

A=[022212021]{\bm A} = \left[ {\begin{array}{ccc} 0&2&2\\ 2&1&2\\ 0&2&1 \end{array}} \right]

解: 由题意有,

a1=(0,2,0)T{\bm a}_1 = (0, 2, 0)^T , a2=(2,1,2)T{\bm a}_2 = (2, 1, 2)^T , a3=(2,2,1)T{\bm a}_3 = (2, 2, 1)^T

正交化得

b1=a1=(0,2,0)T{\bm b}_1 = {\bm a}_1 = (0, 2, 0)^T , k21=a2,b1b1,b1=12k_{21} = \frac{\left\langle{\bm a_2}, {\bm b}_1\right\rangle }{\left\langle{\bm b}_1, {\bm b}_1\right\rangle } = \frac{1}{2}

b2=a2k21b1{\bm b}_2 = {\bm a}_2 - k_{21}{\bm b}_1 =(2,1,2)T12(0,2,0)T=(2,0,2)T= (2, 1, 2)^T - \frac{1}{2}(0, 2, 0)^T = (2, 0, 2)^T , k32=a3,b2b2,b2=34k_{32} = \frac{\left\langle{\bm a_3}, {\bm b}_2\right\rangle }{\left\langle{\bm b}_2, {\bm b}_2\right\rangle } = \frac{3}{4} , k31=a3,b1b1,b1=1k_{31} = \frac{\left\langle{\bm a_3}, {\bm b}_1\right\rangle }{\left\langle{\bm b}_1, {\bm b}_1\right\rangle } = 1

b3=a3k32b2k31b1{\bm b}_3 = {\bm a}_3 - k_{32}{\bm b}_2 - k_{31}{\bm b}_1 =(2,2,1)T34(2,0,2)T1(0,2,0)T=(12,0,12)T= (2, 2, 1)^T - \frac{3}{4}(2, 0, 2)^T - 1(0, 2, 0)^T = (\frac{1}{2}, 0, \frac{-1}{2})^T

单位化得

q1=(0,2,0)T2=(0,1,0)T{\bm q}_1 = \frac{(0, 2, 0)^T}{2} = (0, 1, 0)^T , q2=(2,0,2)T22=(12,0,12)T{\bm q}_2 = \frac{(2, 0, 2)^T}{2\sqrt 2} = (\frac{1}{\sqrt 2}, 0, \frac{1}{\sqrt 2})^T , q3=(12,0,12)T12=(22,0,22)T{\bm q}_3 = \frac{(\frac{1}{2}, 0, \frac{-1}{2})^T}{\frac{1}{\sqrt 2}} = (\frac{\sqrt 2}{2}, 0, \frac{-\sqrt 2}{2})^T

从而有

C=[1k21k3101k32001]=[11210134001]{\bm{C}} = \left[ {\begin{array}{ccc} 1&{{k_{21}}}&{{k_{31}}}\\ 0&1&{{k_{32}}}\\ 0&0&1 \end{array}} \right] = \left[ {\begin{array}{ccc} 1&{\frac{1}{2}}&{1}\\ 0&1&{\frac{3}{4}}\\ 0&0&1 \end{array}} \right]

R=diag(b1,b2,b3)C{\bm R} = {\rm diag}(|{\bm b}_1|, |{\bm b}_2|, |{\bm b}_3|) \cdot {\bm C}

R=[20002200012][11210134001]=[212022320012]{\bm R} = \left[ {\begin{array}{ccc} {2 }&0&0\\ 0&{2\sqrt 2 }&0\\ 0&0&{\frac{1}{\sqrt 2}} \end{array}} \right]\left[ {\begin{array}{ccc} 1&{\frac{1}{2}}&{1}\\ 0&1&{\frac{3}{4}}\\ 0&0&1 \end{array}} \right] = \left[ {\begin{array}{ccc} {2}&{1}&{2}\\ 0&{2\sqrt 2}&{\frac{3}{\sqrt 2}}\\ 0&0&{\frac{1}{\sqrt 2}} \end{array}} \right]
Q=[0122210001222]=[0121210001212]{\bm{Q}} = \left[ {\begin{array}{ccc} {0}&{\frac{1}{{\sqrt 2}}}&{\frac{\sqrt 2}{2}}\\ {1}&{0}&0\\ {0}&{\frac{1}{{\sqrt 2}}}&{\frac{-\sqrt 2}{2}} \end{array}} \right] = \left[ {\begin{array}{ccc} 0&{\frac{1}{{\sqrt 2 }}}&{\frac{1}{{\sqrt 2 }}}\\ 1&0&0\\ 0&{\frac{1}{{\sqrt 2 }}}&{\frac{{ - 1}}{{\sqrt 2 }}} \end{array}} \right]

Givens 变换方法

注解

举个例子, 求如下矩阵的QR分解,

A=[022212021]{\bm A} = \left[ {\begin{array}{ccc} 0&2&2\\ 2&1&2\\ 0&2&1 \end{array}} \right]

解: 由题意有,

A(1)=A{\bm A}^{(1)} = {\bm A} , 取 A(1){\bm A}^{(1)} 的第一列 a1(1)=(0,2,0)T{\bm a}_1^{(1)} = (0, 2, 0)^T , 构造Givens矩阵, 使得 G(1)a1(1)=a1(1)e1{\bm G}^{(1)}{\bm a}_1^{(1)} = |{\bm a}_1^{(1)}| {\bm e}_1 :

G1,2(1)=[010100001]{\bm G}^{(1)}_{1,2} = \left[ {\begin{array}{ccc} 0&1&0\\ {{-}1}&0&0\\ 0&0&1 \end{array}} \right] , 其中, c=ξ1ξ12+ξ22=002+22=0c = \frac{\xi_1}{\sqrt{\xi_1^2 + \xi_2^2}} = \frac{0}{\sqrt{0^2 + 2^2}} = 0 , s=ξ2ξ12+ξ22=202+22=1s = \frac{\xi_2}{\sqrt{\xi_1^2 + \xi_2^2}} = \frac{2}{\sqrt{0^2 + 2^2}} = 1 .

从而 G1,2(1)a1(1)=(2,0,0)T=2e1{\bm G}^{(1)}_{1,2}{\bm a}_1^{(1)} = (2, 0, 0)^T = 2 {\bm e}_1 的第二坐标分量变为 00 , 又第三坐标分量为 00 , 所以无需再构造 G1,3(1){\bm G}^{(1)}_{1,3} 使第三坐标分量为 00 , 当然也可以对 (2,0,0)T(2, 0, 0)^T 继续构造

G1,3(1)=[100010001]{\bm G}^{(1)}_{1,3} = \left[ {\begin{array}{ccc} 1&0&0\\ 0&1&0\\ 0&0&1 \end{array}} \right] , 其中, c=ξ12+ξ22ξ12+ξ22+ξ32=22+0222+02+02=1c = \frac{\sqrt{\xi_1^2+\xi_2^2}}{\sqrt{\xi_1^2 + \xi_2^2 +\xi_3^2}} = \frac{\sqrt{2^2+0^2}}{\sqrt{2^2 + 0^2 + 0^2}} = 1 , s=ξ3ξ12+ξ22+ξ32=022+02+02=0s = \frac{\xi_3}{\sqrt{\xi_1^2 + \xi_2^2 +\xi_3^2}} = \frac{0}{\sqrt{2^2 + 0^2 + 0^2}} = 0 , 可见 G1,3(1){\bm G}^{(1)}_{1,3} 为单位阵.

从而有

G(1)A(1)=G1,3(1)G1,2(1)A(1)=[100010001][010100001][022212021]=[212022021]{\bm G}^{(1)}{\bm A}^{(1)} = {\bm G}^{(1)}_{1,3}{\bm G}^{(1)}_{1,2}{\bm A}^{(1)} = \left[ {\begin{array}{ccc} 1&0&0\\ 0&1&0\\ 0&0&1 \end{array}} \right]\left[ {\begin{array}{ccc} 0&1&0\\ {{\rm{ - }}1}&0&0\\ 0&0&1 \end{array}} \right]\left[ {\begin{array}{ccc} 0&2&2\\ 2&1&2\\ 0&2&1 \end{array}} \right] \\ = \left[ {\begin{array}{ccc} 2&1&2\\ 0&{{-}2}&{{-}2}\\ 0&2&1 \end{array}} \right]

A(2)=[2221]{\bm A}^{(2)} = \left[ {\begin{array}{cc}{-2}&{-2}\\2&1\end{array}} \right] , 取其第一列 a1(2)=(2,2)T{\bm a}_1^{(2)} = (-2, 2)^T , 构造Givens矩阵, 使得 G(2)a1(2)=a1(2)e1{\bm G}^{(2)}{\bm a}_1^{(2)} = |{\bm a}_1^{(2)}| {\bm e}_1 :

G1,2(2)=[12121212]{\bm G}^{(2)}_{1,2} = \left[ {\begin{array}{cc}{\frac{{{\rm{ - }}1}}{{\sqrt 2 }}}&{\frac{1}{{\sqrt 2 }}}\\{\frac{{{\rm{ - }}1}}{{\sqrt 2 }}}&{\frac{{{\rm{ - }}1}}{{\sqrt 2 }}}\end{array}} \right] , 其中, c=ξ1ξ12+ξ22=222+22=12c = \frac{\xi_1}{\sqrt{\xi_1^2 + \xi_2^2}} = \frac{-2}{\sqrt{{-2}^2 + 2^2}} = \frac{-1}{\sqrt 2} , s=ξ2ξ12+ξ22=222+22=12s = \frac{\xi_2}{\sqrt{\xi_1^2 + \xi_2^2}} = \frac{2}{\sqrt{{-2}^2 + 2^2}} = \frac{1}{\sqrt 2} .

从而有

G(2)A(2)=G1,2(2)A(2)=[12121212][2221]=[2232012]{\bm G}^{(2)}{\bm A}^{(2)} = {\bm G}^{(2)}_{1,2}{\bm A}^{(2)} = \left[ {\begin{array}{cc} {\frac{{{\rm{ - }}1}}{{\sqrt 2 }}}&{\frac{1}{{\sqrt 2 }}}\\ {\frac{{{\rm{ - }}1}}{{\sqrt 2 }}}&{\frac{{{\rm{ - }}1}}{{\sqrt 2 }}} \end{array}} \right]\left[ {\begin{array}{cc} {{\rm{ - }}2}&{{\rm{ - }}2}\\ 2&1 \end{array}} \right]{\rm{ = }}\left[ {\begin{array}{cc} {2\sqrt 2 }&{\frac{3}{{\sqrt 2 }}}\\ 0&{\frac{1}{{\sqrt 2 }}} \end{array}} \right]

最后, 令

G=[1G(2)]G(1)=[1000121201212][010100001]=[0101201212012]{\bm G} = \left[ {\begin{array}{cc} 1&{}\\ {}&{{{\bm{G}}^{(2)}}} \end{array}} \right]{{\bm{G}}^{(1)}} = \left[ {\begin{array}{ccc} 1&0&0\\ 0&{\frac{{ - 1}}{{\sqrt 2 }}}&{\frac{1}{{\sqrt 2 }}}\\ 0&{\frac{{ - 1}}{{\sqrt 2 }}}&{\frac{{ - 1}}{{\sqrt 2 }}} \end{array}} \right]\left[ {\begin{array}{ccc} 0&1&0\\ {{\rm{ - }}1}&0&0\\ 0&0&1 \end{array}} \right] = \left[ {\begin{array}{ccc} 0&1&0\\ {\frac{1}{{\sqrt 2 }}}&0&{\frac{1}{{\sqrt 2 }}}\\ {\frac{1}{{\sqrt 2 }}}&0&{\frac{{ - 1}}{{\sqrt 2 }}} \end{array}} \right]

则有

Q=GT=[0121210001212]{\bm Q} = {\bm G}^T = \left[ {\begin{array}{ccc} 0&{\frac{1}{{\sqrt 2 }}}&{\frac{1}{{\sqrt 2 }}}\\ 1&0&0\\ 0&{\frac{1}{{\sqrt 2 }}}&{\frac{{ - 1}}{{\sqrt 2 }}} \end{array}} \right]
R=[2120223220022]=[212022320012]{\bm{R}}{\rm{ = }}\left[ {\begin{array}{ccc} 2&1&2\\ 0&{2\sqrt 2 }&{\frac{{3\sqrt 2 }}{2}}\\ 0&0&{\frac{{\sqrt 2 }}{2}} \end{array}} \right] = \left[ {\begin{array}{ccc} 2&1&2\\ 0&{2\sqrt 2 }&{\frac{3}{{\sqrt 2 }}}\\ 0&0&{\frac{1}{{\sqrt 2 }}} \end{array}} \right]

Householder 变换方法

注解

举个例子, 求如下矩阵的QR分解,

A=[022212021]{\bm A} = \left[ {\begin{array}{ccc} 0&2&2\\ 2&1&2\\ 0&2&1 \end{array}} \right]

解: 由题意有,

A(1)=A{\bm A}^{(1)} = {\bm A} , 取 A(1){\bm A}^{(1)} 的第一列 a1(1)=(0,2,0)T{\bm a}_1^{(1)} = (0, 2, 0)^T , 构造Householder矩阵, 使得 H(1)a1(1)=a1(1)e1{\bm H}^{(1)}{\bm a}_1^{(1)} = |{\bm a}_1^{(1)}| {\bm e}_1 :

b1(1)=a1(1)a1(1)e1=(0,2,0)T2(1,0,0)T=(2,2,0)T{\bm b}_1^{(1)} = {\bm a}_1^{(1)} - |{\bm a}_1^{(1)}|{\bm e}_1 = (0, 2, 0)^T - 2(1, 0, 0)^T = (-2, 2, 0)^T , u1(1)=b1(1)b1(1)=(2,2,0)T22=(12,12,0)T{\bm u}_1^{(1)} = \frac{{\bm b}_1^{(1)}}{|{\bm b}_1^{(1)}|} = \frac{(-2, 2, 0)^T}{2\sqrt{2}} = (\frac{-1}{\sqrt 2}, \frac{1}{\sqrt 2}, 0)^T

u1(1)u1(1)T=[1212012120000]{\bm u}_1^{(1)}{{\bm u}_1^{(1)}}^T = \left[ {\begin{array}{ccc}{\frac{1}{2}}&{\frac{{ - 1}}{2}}&0\\{\frac{{ - 1}}{2}}&{\frac{1}{2}}&0\\0&0&0\end{array}} \right]
H(1)=I2u1(1)u1(1)T=[100010001][110110000]=[010100001]{{\bm{H}}^{(1)}} = {\bm{I}} - 2{\bm u}_1^{(1)}{{\bm u}_1^{(1)}}^T = \left[ {\begin{array}{ccc} 1&0&0\\ 0&1&0\\ 0&0&1 \end{array}} \right] - \left[ {\begin{array}{ccc} 1&{ - 1}&0\\ { - 1}&1&0\\ 0&0&0 \end{array}} \right] = \left[ {\begin{array}{ccc} 0&1&0\\ 1&0&0\\ 0&0&1 \end{array}} \right]
H(1)A(1)=[010100001][022212021]=[212022021]{{\bm{H}}^{(1)}}{{\bm{A}}^{(1)}} = \left[ {\begin{array}{ccc} 0&1&0\\ 1&0&0\\ 0&0&1 \end{array}} \right]\left[ {\begin{array}{ccc} 0&2&2\\ 2&1&2\\ 0&2&1 \end{array}} \right] = \left[ {\begin{array}{ccc} 2&1&2\\ 0&2&2\\ 0&2&1 \end{array}} \right]

A(2)=[2221]{\bm A}^{(2)} = \left[ {\begin{array}{cc}2&2\\2&1\end{array}} \right] , 取其第一列 a1(2)=(2,2)T{\bm a}_1^{(2)} = (2, 2)^T , 构造Householder矩阵, 使得 H(2)a1(2)=a1(2)e1{\bm H}^{(2)}{\bm a}_1^{(2)} = |{\bm a}_1^{(2)}| {\bm e}_1 :

b1(2)=a1(2)a1(2)e1=(2,2)T22(1,0)T=(222,2)T{\bm b}_1^{(2)} = {\bm a}_1^{(2)} - |{\bm a}_1^{(2)}|{\bm e}_1 = (2, 2)^T - 2{\sqrt 2}(1, 0)^T = (2-2{\sqrt 2}, 2)^T , u1(2)=b1(2)b1(2)=(222,2)T2422=(12,1)T422{\bm u}_1^{(2)} = \frac{{\bm b}_1^{(2)}}{|{\bm b}_1^{(2)}|} = \frac{(2-2{\sqrt 2}, 2)^T}{2{\sqrt{4-2\sqrt 2}}} = \frac{(1-{\sqrt 2}, 1)^T}{{\sqrt{4-2\sqrt 2}}}

u1(2)u1(2)T=1422[121][121]=1422[32212121]{\bm u}_1^{(2)}{{\bm u}_1^{(2)}}^T = \frac{1}{{4{-}2\sqrt 2 }}\left[ {\begin{array}{cc} {1{-}\sqrt 2 }\\ 1 \end{array}} \right]\left[ {\begin{array}{ccc} {1{-}\sqrt 2 }&1 \end{array}} \right]{\rm{ = }}\frac{1}{{4{-}2\sqrt 2 }}\left[ {\begin{array}{ccc} {3{-}2\sqrt 2 }&{1{-}\sqrt 2 }\\ {1{-}\sqrt 2 }&1 \end{array}} \right]
H(2)=I2u1(2)u1(2)T=[1001]122[32212121]=[22222222]{{\bm{H}}^{(2)}} = {\bm{I}} - 2{\bm u}_1^{(2)}{{\bm u}_1^{(2)}}^T = \left[ {\begin{array}{ccc} 1&0\\ 0&1 \end{array}} \right] - \frac{1}{{{\rm{2 - }}\sqrt 2 }}\left[ {\begin{array}{ccc} {3{-}2\sqrt 2 }&{1{-}\sqrt 2 }\\ {1{-}\sqrt 2 }&1 \end{array}} \right]{\rm{ = }}\left[ {\begin{array}{ccc} {\frac{{\sqrt 2 }}{2}}&{\frac{{\sqrt 2 }}{2}}\\ {\frac{{\sqrt 2 }}{2}}&{\frac{{{-}\sqrt 2 }}{2}} \end{array}} \right]
H(2)A(2)=[22222222][2221]=[22322022]{{\bm{H}}^{{\rm{(2)}}}}{{\bm{A}}^{{\rm{(2)}}}} = \left[ {\begin{array}{ccc} {\frac{{\sqrt 2 }}{2}}&{\frac{{\sqrt 2 }}{2}}\\ {\frac{{\sqrt 2 }}{2}}&{\frac{{{-}\sqrt 2 }}{2}} \end{array}} \right]\left[ {\begin{array}{ccc} 2&2\\ 2&1 \end{array}} \right]{\rm{ = }}\left[ {\begin{array}{ccc} {2\sqrt 2 }&{\frac{{3\sqrt 2 }}{2}}\\ 0&{\frac{{\sqrt 2 }}{2}} \end{array}} \right]

再令

S=[100H(2)]H(1)=[1000222202222][010100001]{\bm{S}} = \left[ {\begin{array}{ccc} 1&0\\ 0&{{{\bm{H}}^{{\rm{(2)}}}}} \end{array}} \right]{{\bm{H}}^{{\rm{(1)}}}}{\rm{ = }}\left[ {\begin{array}{ccc} 1&0&0\\ 0&{\frac{{\sqrt 2 }}{2}}&{\frac{{\sqrt 2 }}{2}}\\ 0&{\frac{{\sqrt 2 }}{2}}&{\frac{{{-}\sqrt 2 }}{2}} \end{array}} \right]\left[ {\begin{array}{ccc} 0&1&0\\ 1&0&0\\ 0&0&1 \end{array}} \right]

从而

Q=ST=[0121210001212]{\bm Q} = {\bm S}^T = \left[ {\begin{array}{ccc} 0&{\frac{1}{{\sqrt 2 }}}&{\frac{1}{{\sqrt 2 }}}\\ 1&0&0\\ 0&{\frac{1}{{\sqrt 2 }}}&{\frac{{ - 1}}{{\sqrt 2 }}} \end{array}} \right]

R=[212022320012]{\bm{R}} = \left[ {\begin{array}{ccc} 2&1&2\\ 0&{2\sqrt 2 }&{\frac{3}{{\sqrt 2 }}}\\ 0&0&{\frac{1}{{\sqrt 2 }}} \end{array}} \right]

代码实现

matlab代码

>> A = [0 2 2;2 1 2;0 2 1]

A =

     0     2     2
     2     1     2
     0     2     1

>> [Q, R] = qr(A)

Q =

         0    0.7071   -0.7071
   -1.0000         0         0
         0    0.7071    0.7071

R =

   -2.0000   -1.0000   -2.0000
         0    2.8284    2.1213
         0         0   -0.7071