学习QR分解

  • Post author:
  • Post category:其他


QR分解是将矩阵分解成一个正规正交矩阵Q与上三角形矩阵R,所以称为QR分解法。该算法对对称矩阵和非对称矩阵都适用。

定义:

一个矩阵



A

R

m

×

n

,

m

n

A \in \mathbb{R}^{m \times n}, m \geq n






A















R












m


×


n










,




m













n





可以被分解成



A

=

Q

R

A=Q R






A




=








Q


R





, 其中




  • Q

    R

    m

    ×

    m

    Q \in \mathbb{R}^{m \times m}






    Q















    R












    m


    ×


    m













    是正交矩阵




  • R

    [

    R

    ^

    0

    ]

    R

    m

    ×

    n

    R \equiv\left[\begin{array}{l}\hat{R} \\ 0\end{array}\right] \in \mathbb{R}^{m \times n}






    R















    [























    R







    ^













    0






















    ]

















    R












    m


    ×


    n















  • R

    ^

    R

    n

    ×

    n

    \hat{R} \in \mathbb{R}^{n \times n}














    R







    ^




















    R












    n


    ×


    n













    是上三角矩阵

下面给出一个直观的QR分解的例子

在这里插入图片描述

在这里插入图片描述

从QR分解角度看线性最小二乘

对于一个over-determined线性最小二乘问题



A

x

b

A x \simeq b






A


x













b





,,其目标函数是




ϕ

(

x

)

=

r

(

x

)

2

2

=

b

A

x

2

2

=

b

Q

[

R

^

0

]

x

2

2

=

Q

T

(

b

Q

[

R

^

0

]

x

)

2

2

=

Q

T

b

[

R

^

0

]

x

2

2

\begin{aligned} \phi(x)=\|r(x)\|_{2}^{2} &=\|b-A x\|_{2}^{2}=\left\|b-Q\left[\begin{array}{l}\hat{R} \\ 0\end{array}\right] x\right\|_{2}^{2} \\ &=\left\|Q^{T}\left(b-Q\left[\begin{array}{c}\hat{R} \\ 0\end{array}\right] x\right)\right\|_{2}^{2} \\ &=\left\|Q^{T} b-\left[\begin{array}{c}\hat{R} \\ 0\end{array}\right] x\right\|_{2}^{2} \end{aligned}
















ϕ


(


x


)




=







r


(


x


)















2










2


























































=







b









A


x















2










2





















=





























































b









Q






[























R







^













0






















]






x



































































2










2





























=






























































Q











T














(



b









Q






[























R







^













0






















]






x



)





































































2










2





























=






























































Q











T










b











[























R







^













0






















]






x



































































2










2






































这里



Q

R

m

×

m

,

Q

b

R

m

×

1

,

[

R

^

0

]

R

m

×

n

,

[

R

^

0

]

x

R

m

×

1

Q \in \mathbb{R}^{m \times m}, \quad Q b \in \mathbb{R}^{m \times 1},\left[\begin{array}{c}\hat{R} \\ 0\end{array}\right] \in \mathbb{R}^{m \times n},\left[\begin{array}{c}\hat{R} \\ 0\end{array}\right] x \in \mathbb{R}^{m \times 1}






Q















R












m


×


m










,






Q


b















R












m


×


1










,






[























R







^













0






















]

















R












m


×


n










,






[























R







^













0






















]






x















R












m


×


1












如果把



Q

T

b

Q^{T} b







Q











T










b





拆分成上下两部分,形式



[

R

^

0

]

\left[\begin{array}{c}\hat{R} \\ 0\end{array}\right]








[























R







^













0






















]







类似,




Q

T

b

=

[

c

1

c

2

]

Q^{T} b=\left[\begin{array}{l}c_{1} \\ c_{2}\end{array}\right]







Q











T










b




=










[
















c











1


























c











2







































]







, where



c

1

R

n

,

c

2

R

m

n

c_{1} \in \mathbb{R}^{n}, c_{2} \in \mathbb{R}^{m-n}







c











1
































R












n










,





c











2
































R












m





n













。那么目标函数可以写成下面的形式:




r

(

x

)

2

2

=

c

1

R

^

x

2

2

+

c

2

2

2

\|r(x)\|_{2}^{2}=\left\|c_{1}-\hat{R} x\right\|_{2}^{2}+\left\|c_{2}\right\|_{2}^{2}









r


(


x


)















2










2





















=

























































c











1


































R







^







x


























































2










2





















+














c











2
































2










2





















可以看到,我们只能最小化前一部分



c

1

R

^

x

2

2

\left\|c_{1}-\hat{R} x\right\|_{2}^{2}























































c











1


































R







^







x


























































2










2






















到0,即



R

^

x

=

c

1

\hat{R} x=c_{1}














R







^







x




=









c











1


























r

(

x

)

2

2

\|r(x)\|_{2}^{2}









r


(


x


)















2










2






















的最小值为



c

2

2

2

\left\|c_{2}\right\|_{2}^{2}












c











2
































2










2






















。这样处理之后就避免了求正规方程组中的



(

A

T

A

)

1

\left(A^{T} A\right)^{-1}









(




A











T










A



)
















1













,避免了条件数变成



cond

(

A

T

A

)

=

cond

(

A

)

2

\operatorname{cond}\left(A^{T} A\right)=\operatorname{cond}(A)^{2}







c


o


n


d







(




A











T










A



)






=









c


o


n


d



(


A



)











2













,所以QR分解法更加数值稳定。



版权声明:本文为qq_38766208原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。