文档详情

基于MATLAB的数值分析编程上机作业.doc

发布:2016-10-13约3.64千字共7页下载文档
文本预览下载声明
基于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) %Define variables: % 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中绝对值最大的一项的绝对值; if M==0 % 如果x=0,提示出错,程序终止; disp(M=0); return; else x=x/M; % 规范化 end; s=norm(x); % 求x的二范数 if x(1)0 % 首项为负,s值要变号 s=-s; end u=x; % 除首项外,其余各项x,u相同 u(1)=s+x(1); % 计算u的首项 p=s*u(1); % 计算p if n==1 u=0; end % 若x是1×1维向量,则u=0 function H=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) %Define variables: % 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.0000 0 0 0 0 1.0000 0 0 0 0 -0.8944 -0.4472
显示全部
相似文档