没有合适的资源?快使用搜索试试~ 我知道了~
数值分析matlab上机作业报告.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 11 浏览量
2023-03-31
19:57:22
上传
评论
收藏 818KB PDF 举报
温馨提示
试读
28页
。
资源推荐
资源详情
资源评论
一、给定向量 x≠0,计算初等反射阵
H
k
。
1.程序功能:
给定向量 x≠0,计算初等反射阵
H
k
。
2.基本原理:
若
x
x , x ,, x
R
的分量不全为零,则由
sign(x
1
) x
2
u x
e
1
(x
1
, x
2
,
, x
n
)
1
2
u
2
(
x
1
)
2
uu
T
1 T
H I 2
2
I
uu
u
2
确定的镜面反射阵 H 使得
Hx
e y
;当
(1 k n)
时,由
n
2 1/ 2
sign(x )( (x ))
k k i
ik
u
(k )
(0,
,0, x
k
k
, x
k 1
,
, x
n
)
T
R
n
1
(u
(k )
)
T
u
(k )
(
x ) =
(u
(k )
)
T
k k k k
k
2
1 (k ) (k ) T
H
k
I
k
u (u )
有
H
k
x (x
1
, x
2
,, x
k 1
,
k
,0,,0)
T
R
n
算法:
(1)输入 x,若 x 为零向量,则报错
(2)将 x 规范化,
M max
x , x ,, x
如果 M=0,则报错同时转出停机
否则
x
i
x
i
M ,i 1,2,, n
(3)计算
x
2
,如果
x
1
0
,则
(4)
(
x
1
)
(5)计算
u x,u(1) x
1
(6)
H I
uu
(7)
y (M
,0, ,0)
1 T
(8)按要求输出,结束
3.变量说明:
x - 输入的 n 维向量;
n - n 维向量 x 的维数;
M - M 是向量 x 的无穷范数,即 x 中绝对值最大的一项的绝对值;
p - Householder 初等变换阵的系数ρ ;
u - Householder 初等变换阵的向量 U
s - 向量 x 的二范数;
x - 输入的 n 维向量;
n - n 维向量 x 的维数;
p - Householder 初等变换阵的系数ρ ;
u - Householder 初等变换阵的向量 U
k - 数 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 初等变换阵的系数ρ ,
% u 是 Householder 初等变换阵的向量 U。
n=length(x); % 得到 n 维向量 x 的维数;
p=1;u=0; % 初始化 p,u;
M=max(abs(x)); % 得到向量 x 的无穷范数,即 x 中绝对值最大的一项的绝对值;
if M==0 % 如果 x=0,提示出错,程序终止;
disp('Error: 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
(2)
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;
n=length(x); % 得到 n 维向量 x 的维数;
if k>n %如果 k 值溢出,报错;
disp('Error: k>n');
end
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';
5.使用示例:
情形 1:
X 为零向量
>> x=[0,0,0,0]';
>> H=holderk(x,1)
Error: M=0
H =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
情形 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.4082 0.8690 -0.1747 -0.2184
-0.5443 -0.1747 0.7671 -0.2911
-0.6804 -0.2184 -0.2911 0.6361
检验:
>> det(H)
ans =
-1.0000
>> H*x
ans =
-7.3485
0.0000
0.0000
0.0000
情形 4:
(1)K 值为 3:
>> x=[4,3,2,1]';
>> H=holderk(x,3)
H =
1.0000 0
0 1.0000
0 0
0 0
检验:
>> det(H)
ans =
-1
>> H*x
ans =
4.0000
3.0000
-2.2361
0
(2)K 值为 2:
>> x=[4,3,2,1]';
>> H=holderk(x,2)
0 0
0 0
-0.8944 -0.4472
-0.4472 0.8944
H =
1.0000 0 0 0
0 -0.8018 -0.5345 -0.2673
0 -0.5345 0.8414 -0.0793
0 -0.2673 -0.0793 0.9604
>> det(H)
ans =
-1.0000
>> H*x
ans =
4.0000
-3.7417
0.0000
0
二、设 A 为 n 阶矩阵,编写用 Householder 变换法对矩阵 A 作正交分解的程序。
1.程序功能:
给定 n 阶矩阵 A,通过本程序用 Householder 变换法对矩阵 A 作正交分解,得出 A=QR
2.基本原理:
任一实列满秩的 m×n 矩阵 A,可以分解成两个矩阵的乘积,即A=QR,其中 Q 是具有
法正交列向量的 m×n 矩阵,R 是非奇异的 n 阶上三角阵。
算法:
(1)输入 n 阶矩阵 A
(2)对
A
k : n,k
,求 Househoulder 初等反射阵的
k
,u
(k )
。
k 1,2,, n 1
(3)计算上三角阵 R,仍然存储在 A
H
k
A
(k )
A
(k 1)
j k , k 1, , n
1
n
k
(k )
t
j
u
i
a
ij
k
ik
(k 1) (k )
a
ij
a
ij
t
j
u
i
k
(4)计算正交阵 Q
剩余27页未读,继续阅读
资源评论
คิดถึง643
- 粉丝: 3879
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功