实验三矩阵的QR分解1、原理矩阵QR分解是一种特殊的三角分解,在解决矩阵特征值的计算、最小二乘法等问题中起到重要作用。设A∈Cm×n,m≥n且rankA=n,则必存在非奇异的上三角n×n矩阵R及m×n矩阵Q,QHQ=In,使得A=QR。用Gram-Schmidt方法对矩阵进行QR分解时,所论矩阵必须是列满秩矩阵。不过,不是列满秩的矩阵只要是方阵,也可以作QR分解,这就是所谓的Householder方法。设w∈Cn是一个单位向量,令则称H是一个Householder矩阵或Householder变换。2、算法设u∈Cn是一个单位向量,则对于任意的Cn存在Householder矩阵H,使得Hx=au。其中为实数。设A为任一n阶矩阵,则必存在n阶酉矩阵Q和n阶上三角阵R,使得A=QR。证,第一步,将矩阵A按列分块写成A=(α1,α2,…,αn)。如果α1≠0,则可得,存在n阶householder矩阵H1使得H1α1=—a1e1,|a1|=||α1||,e1∈Cn于是有H1A=(H1α1,H1α2,…,H1αn)=11*0naA如果α1=0,则直接进行下一步,此时相当于取H1=In,而a1=0.第二步,将矩阵An-1按列分块写成An-1=(α1,α2,…,αn-1)。如果α1≠0,则可得,存在n-1阶householder矩阵H’2使得H1α1=—a1e1,|a1|=||α1||,e1∈Cn于是有H’2An-1=(H’2α1,H’2α2,…,H’2αn-1)=22*0naA此时,令H2=2100'TH则H2是n阶Householder矩阵,且使H2H1A=122**0*0naaA如果α1=0,则直接进行下一步。第三步,对n-2阶矩阵继续进行类似的变换,如此下去,之多在第n-1步,我们可以找到Householder矩阵H1,H2,…,Hn-1使得Hn-1…H2H1A=12***0**00*000'nnaa令Q=Hn-1…H2H1,则Q是酉矩阵之积,从而必有酉矩阵并且A=QRHIH2)(uaxxaH,23、程序此实验中用到的有householder子程序和qrfenjie主程序,程序如下:function[R,y]=householder(x,i,j)xi=x(i);xj=x(j);r=sqrt(xi^2+xj^2);cost=xi/r;sint=xj/r;R=eye(length(x));R(i,i)=cost;R(i,j)=sint;R(j,i)=-sint;R(j,j)=cost;y=x(:);y([i,j])=[r,0];functionqrfenjie(A)n=size(A,1);R=A;Q=eye(n);fori=1:n-1forj=2:n-i+1x=R(i:n,i);rt=householder(x,1,j);r=blkdiag(eye(i-1),rt);Q=Q*r',R=r*Rendend4、例子以教材上的矩阵A=[0-31;21-6;042]为例说明上述程序的正确性,在matlab中输入以下指令:5、结果输入上述指令以后,得到如下的结果:此时可以说,上述程序是正确的。