- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
household变换.
3.2?正交变换为了给出求解最小二乘问题的更实用的算法,这一节我们来介绍两个最基本的初等正交变换,它们是数值线性代数中许多算法的基础。3.2.1 Householder变换使用Gauss变换将一个矩阵约化为上三角形式是基于一个简单的事实:对于任一个给定的向量,可构造一个初等下三角阵,使,这里是的第一列,.?这一节我们来讨论如何求一个初等正交矩阵,使其具有矩阵的功能。这样,对一个矩阵的上三角化任务,便可以由一系列的初等正交变换来完成。定义3.2.1?设满足,定义为,??(3.2.1)则称为Householder变换。Householder变换也叫做初等反射矩阵或镜像变换,它是著名的数值分析专家Householder在1958年为讨论矩阵特征值问题而提出来的。下面的定理给出了Householder变换的一些简单而又十分重要的性质。定理3.2.1?设是由(3.2.1)定义的Householder变换,那么满足:对称性:;正交性:;对合性:;反射性:对任意的,如下图所示,是关于的垂直超平面的镜像反射。证明?(1)显然。(2)和(3)可由(1)导出。事实上,我们有(4)设,则可表示为其中?利用和可得这就说明了为关于的镜像反射。Householder变换除了具有定理3.2.1所述的良好性质外,它的主要用途在于,它能如Gauss变换一样,可能通过适当选取单位向量,把一个给定向量的若干个指定的分量变为零。引理1?设为两个不相等的向量,且,则存在一个Householder变换满足证明?令,构造Householder变换阵由于,因此,从而引理证毕定理3.2.2?设,则可构造单位向量,使由(3.2.1)定义的Householder变换满足,其中证明?由于故欲使,则应为对,直接验证可知这样定义的满足定理的要求。定理3.2.2告诉我们,对任意的都可以构造出Householder矩阵,使的后个分量为零;而且其证明亦告诉我们,可按如下的步骤来构造确定的单位向量:计算;计算构造算法程序时,以注意以下几个问题:计算时,为避免溢出,可以考虑先将规范化为的向量。事实上,若,假定Householder变换阵使,那么也就是说,对于向量集合中的任一个非零向量,由Th3.2.2构造出的Householder变换阵都是一样的,或许最多只相差一个符号。在实际计算时,前的符号如何选取最好。即在计算向量的第一个分量时,为了避免两相近数相减,而导致计算结果损失有效数字,可适当做变形处理,即1) 如果时,2) 直接计算:;3) 如果时,4) 事实上,5)考虑到实际计算的需要,在最后构造Householder变换阵时,常规定H具有如下形式,其中:的第一个分量为1;算法3.2.1?(计算Householder变换)对应的C程序函数如下:void Householder(double*x,int n,doublebet,double *v){int i;double alph,norm;norm=fabs(x[0]);for(i=1;in;i++)if(normfabs(x[i]))norm=fabs(x[i]);if(norm==0){printf(Fail, because x is zero.\n);exit(0);}for(i=0;in;i++)x[i]/=norm;norm=0.0;for(i=1;in;i++)norm+=x[i]*x[i];v[0]=1.0;for(i=1;in;i++)v[i]=x[i];if(norm==0)bet=0.0;else{alph=sqrt(x[0]*x[0]+norm);if(x[0]=0)v[0]=x[0]-alph;elsev[0]=-norm/(x[0]+alph);bet=2.0*v[0]*v[0]/(norm+v[0]*v[0]);alph=v[0];for(i=0;in;i++)v[i]=v[i]/alph;}}利用Householder变换在一个向量中引入零元素,并不局限于的形式,其实它可以将向量中任何若干相邻的元素化为零。例如,欲在中从至位置引入零元素,只需定义为即可,其中.在应用Householder变换约化一个给定矩阵为某一需要的形式时,其主要工作量是计算一个Householder变换与一个已知矩阵的乘积。在实际计算时,并不需要以显式给出,而是根据如下的公式来计算其中,即计算计算(即为所求的乘积)。完成这一计算任务所需的运算量为算法3.2.1的数值性态是十分令人满意的。假定算法3.2.1的计算结果为和,定义则可证详细的误差分析参见[21]。3.2.2 Givens变换欲把一个向量中许多分量化为零,可以用Householder变换,例如前面所讲到的把一个向量中若干相邻分量化为零。如果只将其中一个分量化为零,则就采用Given
文档评论(0)