欢迎来到天天文库
浏览记录
ID:22635468
大小:426.50 KB
页数:16页
时间:2018-10-30
《qr方法求矩阵全部特征值》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、数值分析课程设计QR方法求矩阵全部特征值问题复述用算法求矩阵特征值:(i)(ii)要求:(1)根据算法原理编制求(i)与(ii)中矩阵全部特征值的程序并输出计算结果(要求误差)(2)直接用现有的数学软件求(i),(ii)的全部特征值,并与(1)的结果比较。问题分析QR方法是目前公认为计算矩阵全部特征值的最有效的方法。它适用于任一种实矩。QR方法的原理是利用矩阵的正交分解产生一个与矩阵A相似的矩阵迭代序列,这个序列将收敛于一个上三角阵或拟上三角阵,从而求得原矩阵A的全部特征值。QR是一个迭代算法,每一步迭代都要进行QR分解,再作逆序的矩阵乘法。要是对矩阵A直接用QR方法,计算量
2、太大,效率不高。因此,一个实际的QR方法计算过程包括两个步骤,首先要对矩阵A用初等相似变换约化为上Hessenberg矩阵,再用QR方法求上Hessenberg矩阵的全部特征值。示意如下:对B矩阵的约化只需将每列次对角线上的元素约化为0。因此常常用平面旋转阵(Givens变换阵)来进行约化。一、QR方法原理及收敛性设已实现了QR分解,记其中是正交阵,是上三角阵。因为,用对作正交相似变换有可改写为显然只是的QR分解因子阵的逆序相乘,而且与原矩阵有相同的特征值。对矩阵再重复以上过程并继续下去,可以得到一个与原矩阵A有相同特征值的矩阵序列。其过程如下:记对作正交分解作矩阵,~对作正
3、交分解作矩阵,~~,~重复以上过程可得一般的形式为对作正交分解构成矩阵序列(k=1,2……)~A从矩阵A开始得到一个矩阵序列这个矩阵序列中每一个矩阵都与原矩阵相似,即都有与A相同的特征值。这个矩阵序列在实质上收敛于依次以为对角元的上三角阵。具体可以表示为其中的极限不一定存在。一、用正交相似变换约化矩阵为上Hessenberg阵用Householder变换可以将一个向量指定的某个分量以下的各分量变为0。我们只要求消掉A的次对角线以下的元素,即将A约化为上Hessenberg阵。为了使变换前后矩阵的特征值不变,需要用Householder矩阵对A作相似变换,即用正交阵同时左乘和右
4、乘A时,原来已变为0的元素不再改变。若设是Householder矩阵,用它对A的第一列元素的变换示意如下:依次对A的各列进行类似的变换,一共要进行次变换,最终可以得到一个与原矩阵A有相同特征值的上Hessenberg阵。以上约化A为上Hessenberg阵的过程可以用一系列Householder矩阵来实现。其中,对于每一个有经过步约化就可得到一个上Hessenberg阵(A的第列不需要约化)一、Hessenberg阵的QR算法设矩阵,其特征值都是实数。若已用Householder变换约化为上Hessenberg阵对已得到的上Hessenberg阵可用QR变换,经过迭代过程约化
5、为上三角形矩阵以求出A的特征值。只要A的特征值是实数,将B约化为上三角形矩阵总是可以做到的。由于B矩阵结构上的特点,对B矩阵的约化只需将每列次对角线上的元素约化为0.可用平面旋转阵(Givens变换阵)来进行约化。n阶方阵为平面旋转阵。还是一个非对称的正交阵,有,也是一个平面旋转阵。有以下几种作用:1、左乘向量只改变x的第i个和第j个分量。现构造对x作变换使的结果将x的第j个分量约化为0。令,有调整角可使。若记,按下式选取于是有。2、对非零的n维向量x连续左乘,可将x的第i+1到第n个分量都约化为零;即其中3、用对矩阵A作变换得到的结论是左乘A只改变A的第i,j行;右乘A只改
6、变A的第i,j列;用对A作正交相似变换改变了A的i行和j行以及i列和j列。用一系列连续左乘矩阵A,可以将矩阵A化为上三角阵。数据结构描述主要数据成员说明doubleA[n][n]存放矩阵AdoubleQ[n][n],存放QR分解式的正交矩阵QdoubleR[n][n]存放QR分解式的上三角阵Rdoublep[n][n]Givens矩阵pdoubleI[n][n]N阶单位阵doubleV[n][n]存放Q矩阵的转置doubleT[n][n]初等反射阵Tdoubleeps精度doublemax最大值doubledet存放行列式的值intcount存放迭代次数主要函数成员说明dou
7、bleDet(doubleL[n][n])用高斯列主元方法求行列式intNon_singularMatrix(doubleL[n][n])判断是否是非奇异矩阵voidDisp(doubleH[n][n])输出矩阵intIsZero(doublea[],intj)判断数组是否全为0intsgn(doubley)符号函数voidHessenberg(doubleA[n][n])将矩阵化为上Hessenberg矩阵intIsHessenberg(doubleE[n][n])判断是否是上Hessenberg矩阵
此文档下载收益归作者所有