预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于MATLAB的数值分析编程上机作业(1)班级:学号:姓名:日期:页数:基于MATLAB的数值分析编程上机作业(1) 一、给定向量x≠0,计算初等反射阵H。 1、基本原理: 若的分量不全为零,则由 确定的镜面反射阵H使得;当时,由 有 算法1: 输入x 将x规范化, 如果M=0,则转出停机 否则 计算,如果,则 4、 5、计算 6、 7、 8、按要求输出 结束 2、程序代码: function[p,u]=holder2(x) %HOLDER2给定向量x≠0,计算Householder初等变换阵的p,u %程序功能:函数holder2给定向量x≠0,计算Householder初等变换阵的p,u; %输入:n维向量x; %输出:[p,u]。p是Householder初等变换阵的系数ρ, %u是Householder初等变换阵的向量U。 %使用举例: %[p,u]=holder2(x) %Definevariables: %x - 输入的n维向量; %n - n维向量x的维数; %M - M是向量x的无穷范数,即x中绝对值最大的一项的绝对值; %p - Householder初等变换阵的系数ρ; %u - Householder初等变换阵的向量U %s - 向量x的二范数; n=length(x); %得到n维向量x的维数; p=1;u=0;%初始化p,u; M=max(abs(x)); %得到向量x的无穷范数,即x中绝对值最大的一项的绝对值; ifM==0 %如果x=0,提示出错,程序终止; disp('M=0'); return; else x=x/M; %规范化 end; s=norm(x); %求x的二范数 ifx(1)<0 %首项为负,s值要变号 s=-s; end u=x; %除首项外,其余各项x,u相同 u(1)=s+x(1); %计算u的首项 p=s*u(1); %计算p ifn==1u=0;end %若x是1×1维向量,则u=0 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项到最后项全为零; %引用函数: %holder2;示例[p,u]=holder2(x); %使用举例: %H=holderk(x,k) %Definevariables: %x - 输入的n维向量; %n - n维向量x的维数; %p - Householder初等变换阵的系数ρ; %u - Householder初等变换阵的向量U %k - 数k,H*x=y,使得y的第k+1项到最后项全为零; n=length(x);%得到n维向量x的维数; H=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)-p\u*u'; %计算H(k:n,k:n)=I-p\u*u'; 3、计算实例: >>x=[2,0,2,1]' x= 2 0 2 1 >>H=holderk(x,3) H= 1.0000000 01.000000 00-0.8944-0.4472 00-0.44720.8944 >>H*x ans= 2.0000 0 -2.2361 0二、用Householder变换法求矩阵A的正交分解A=QR。 1、基本原理: 任一实列满秩的m×n矩阵A,可以分解成两个矩阵的乘积,即A=QR,其中Q是具有法正交列向量的m×n矩阵,R是非奇异的n阶上三角阵。 算法: 输入n阶矩阵A 对,求Househoulder初等反射阵的。 计算上三角阵R,仍然存储在A 4、计算正交阵Q 5、按要求输出 结束 2、程序代码: function[Q,A]=qrhh(A) %QRHH用Householder变换法对n阶矩阵A作正交分解A=QR; %程序功能:函数qrhh用Householder变换法对矩阵A作正交分解A=QR; %输入:n阶矩阵A; %输出:[Q,A]。Q是具有法正交列向量的n阶矩阵, %A(即R)是非奇异的n阶上三角阵,仍用输入的矩阵A存储。 %引用函数: %holder2;示例[p,u]=holder2(x); %使用举例: