资源描述:
《数值分析matlab上机作业报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一、给定向量x≠0,计算初等反射阵Hk。1.程序功能:给定向量x≠0,计算初等反射阵Hk。2.基本原理:若的分量不全为零,则由确定的镜面反射阵H使得;当时,由有算法:(1)输入x,若x为零向量,则报错(2)将x规范化,如果M=0,则报错同时转出停机否则(3)计算,如果,则(4)(5)计算(6)(7)(8)按要求输出,结束3.变量说明:x-输入的n维向量;n-n维向量x的维数;M-M是向量x的无穷范数,即x中绝对值最大的一项的绝对值;p-Householder初等变换阵的系数ρ;u-Householder初等变换阵的向量
2、Us-向量x的二范数;x-输入的n维向量;n-n维向量x的维数;p-Householder初等变换阵的系数ρ;u-Householder初等变换阵的向量Uk-数k,H*x=y,使得y的第k+1项到最后项全为零;4.程序代码:(1)function[p,u]=holder2(x)%HOLDER2给定向量x≠0,计算Householder初等变换阵的p,u%程序功能:函数holder2给定向量x≠0,计算Householder初等变换阵的p,u;%输入:n维向量x;%输出:[p,u]。p是Householder初等变换阵的
3、系数ρ,%u是Householder初等变换阵的向量U。n=length(x);%得到n维向量x的维数;p=1;u=0;%初始化p,u;M=max(abs(x));%得到向量x的无穷范数,即x中绝对值最大的一项的绝对值;ifM==0%如果x=0,提示出错,程序终止;disp('Error:M=0');return;elsex=x/M;%规范化end;s=norm(x);%求x的二范数ifx(1)<0%首项为负,s值要变号s=-s;endu=x;%除首项外,其余各项x,u相同u(1)=s+x(1);%计算u的首项p=s*
4、u(1);%计算pifn==1u=0;end%若x是1×1维向量,则u=0(2)functionH=holderk(x,k)%HOLDERK给定向量x≠0,数k,计算初等反射阵Hk,使HkX=Y,其中Y的第k+1项到最后项全为零;%程序功能:函数holderk给定向量x≠0,数k,计算初等反射阵Hk,使HkX=Y,%程序功能:函数holder2给定向量x≠0,计算Householder初等变换阵的p,u;%输入:n维向量x,数k;%输出:H。H是Householder初等变换阵,H*x=y,使得y的第k+1项到最后项全
5、为零;%引用函数:holder2;n=length(x);%得到n维向量x的维数;ifk>n%如果k值溢出,报错;disp('Error:k>n');endH=eye(n);%初始化H,并使H(1:k,1:k)=I;[p,u]=holder2(x(k:n));%得到计算Householde初等变换阵的系数ρ、向量U;H(k:n,k:n)=eye(n-k+1)-pu*u';%计算H(k:n,k:n)=I-pu*u';5.使用示例:情形1:X为零向量>>x=[0,0,0,0]';>>H=holderk(x,1)Erro
6、r:M=0H=1000010000100001情形2:K值溢出:>>x=[1,2,3,4]';>>H=holderk(x,5)Error:k>n情形3:K值为1:>>x=[2,3,4,5]';>>H=holderk(x,1)H=-0.2722-0.4082-0.5443-0.6804-0.40820.8690-0.1747-0.2184-0.5443-0.17470.7671-0.2911-0.6804-0.2184-0.29110.6361检验:>>det(H)ans=-1.0000>>H*xans=-7.34850
7、.00000.00000.0000情形4:(1)K值为3:>>x=[4,3,2,1]';>>H=holderk(x,3)H=1.000000001.00000000-0.8944-0.447200-0.44720.8944检验:>>det(H)ans=-1>>H*xans=4.00003.0000-2.23610(2)K值为2:>>x=[4,3,2,1]';>>H=holderk(x,2)H=1.00000000-0.8018-0.5345-0.26730-0.53450.8414-0.07930-0.2673-0.0
8、7930.9604>>det(H)ans=-1.0000>>H*xans=4.0000-3.74170.00000二、设A为n阶矩阵,编写用Householder变换法对矩阵A作正交分解的程序。1.程序功能:给定n阶矩阵A,通过本程序用Householder变换法对矩阵A作正交分解,得出A=QR2.基本原理:任一实列满秩的m×n矩