没有合适的资源?快使用搜索试试~ 我知道了~
matlab上机作业报告(计算初等反射阵,用Householder变换法对矩阵A作正交分解,连续函数最佳平方逼近等).docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
14 浏览量
2023-03-01
19:19:26
上传
评论
收藏 614KB DOCX 举报
温馨提示
.
资源推荐
资源详情
资源评论








H
一、给定向量 x≠0,计算初等反射阵
k
。
1.程序功能:
H
给定向量 x≠0,计算初等反射阵
k
。
2.基本原理:
x x ,x ,�,x
R
的分量不全为零,则由
若
sign(x ) x
1
2
u x e (x , x , , x )
1
1
2
n
1
2
u
(
x )
2
2
1
uu
T
H I 2
I uu
1
T
u
2
2
Hx e y ;当
(1 k n)
时,由
确定的镜面反射阵 H 使得
n
( )( ( ))
sign x
x
2
1/ 2
k
k
i
ik
u
(k )
(0, ,0, ,
, , )
T
R
n
x
x
x
k
k
k1
n
1
2
(u ) u
( ) = (u )
x
(k ) T (k )
(k ) T
k
k
k
k
k
H I u (u )
1 (k )
(k ) T
k
k
H x (x , x , , x , ,0, ,0) R
有
T
n
k
1
2
k 1
k
算法:
(1)输入 x,若 x 为零向量,则报错
(2)将 x 规范化,
M max x , x ,�, x
如果 M=0,则报错同时转出停机
x M ,i 1,2,�,n
否则 x
i
i
x
0 ,则
(3)计算
,如果 x
2
1
(
)
x
(4)
1
u x,u(1) x
(5)计算
1
H I uu
(6)
1
T
y (M ,0, ,0)
(7)

(8)按要求输出,结束
3.变量说明:
x
n
- 输入的 n 维向量;
- n 维向量 x 的维数;
M - M 是向量 x 的无穷范数,即 x 中绝对值最大的一项的绝对值;
p
u
s
- Householder 初等变换阵的系数ρ ;
- Householder 初等变换阵的向量 U
- 向量 x 的二范数;
x
n
p
u
k
- 输入的 n 维向量;
- n 维向量 x 的维数;
- Householder 初等变换阵的系数ρ ;
- Householder 初等变换阵的向量 U
- 数 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 维向量 x 的维数;
% 初始化 p,u;
n=length(x);
p=1;u=0;
M=max(abs(x));
if M==0
% 得到向量 x 的无穷范数,即 x 中绝对值最大的一项的绝对值;
% 如果 x=0,提示出错,程序终止;
disp('Error: M=0');
return;
else
x=x/M;
% 规范化
end;
s=norm(x);
if x(1)<0
s=-s;
% 求 x 的二范数
% 首项为负,s 值要变号
end
u=x;
% 除首项外,其余各项 x,u 相同
% 计算 u 的首项
u(1)=s+x(1);
p=s*u(1);
if n==1 u=0; end
% 计算 p
% 若 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);
if k>n
% 得到 n 维向量 x 的维数;
%如果 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
1
0
0
0
0
1
0
0
0
0
1
0
0
0
情形 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
0
0
0
0
0
0
1.0000
0 -0.8944 -0.4472
0 -0.4472 0.8944
检验:
>> 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)

H =
1.0000
0 -0.8018 -0.5345 -0.2673
0 -0.5345 0.8414 -0.0793
0 -0.2673 -0.0793 0.9604
0
0
0
>> 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
:n,k
,u
( ) 。 k
� n
1, 2, , 1
(2)对 A k
,求 Househoulder 初等反射阵的
k
k
(3)计算上三角阵 R,仍然存储在 A
H A
( )
A(
k
1)
k
k
j k , k 1,� , n
1
n
t
u
a
(k)
k
j
i
ij
i
k
k
(k1)
a
(k)
t u
k
a
ij
ij
j
i
(4)计算正交阵 Q
剩余27页未读,继续阅读
资源评论


xxpr_ybgg
- 粉丝: 5922
- 资源: 3万+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
