1 / 14
文档名称:

数值分析实验报告7.doc

格式:doc   大小:544KB   页数:14页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数值分析实验报告7.doc

上传人:雨林书屋 2022/6/30 文件大小:544 KB

下载得到文件列表

数值分析实验报告7.doc

相关文档

文档介绍

文档介绍:数值分析实验报告7..
数值分析实验报告7..
1 / 14
数值分析实验报告7..
实验七、 QR 算法
一、实验目的
1、熟悉 matlab 编程
a1( j 1) ,可选择 (n-j+1) 的 Householder 矩阵变换
为0,A
为(n-j+1) 阶方阵,设其第一列为
H j
( n
j ) (n
j ) ,使 H j a1( j 1)
j e1 ,e1
(1,0,
,0)
n
j 1, 根据 H j 构造 n*n
阶的变
换矩阵 H j
为 H j
I j 1
0
H j
A( j 1)
D ( j )
B ( j )
. 它和 A( j 1)
0
, 于是有 A(
j )
0
j
有类似
H j
A
的形式,只是
D ( j )
为 j
阶方阵,其对角线以下元素是
0 ,这样经过
n-1 步运算得到
H n 1
H1 A
A(n
1)
R,其中 R
A(n
1) 为上三角矩阵, P
H n
1 H1 为正交矩阵,从而
有 PA=R 。
2、 QR 算法
设 A
n n
,且对 A 进行 QR 分解,即 A QR ,其中 R 为上三角矩阵, Q 为正交矩
阵,于是可得到一个新矩阵 B
RQ QT AQ 。显然, B 是由 A 经过正交相似变换得到,
因此 B 与 A 特征值相同,再对
B 进行 QR 分解,又可得一新的矩阵,重复这一过程可得到
矩阵序列:
设A A1
将A进行 QR分解A
Q R
1
1
1
1
作矩阵
T
RQ Q1
AQ
A2
1
1
1
1
求得 Ak 后将 Ak 进行 QR 分解 Ak QkRk
形成矩阵 Ak 1 RkQk QkT Ak Qk
QR 算法,就是利用矩阵的 QR 分解,按上述递推法则构造矩阵序列 Ak 的过程。只
要 A 为非奇异矩阵,则由 QR 算法就完全确定 Ak 。
数值分析实验报告7..
数值分析实验报告7..
4 / 14
数值分析实验报告7..
四、实验内容
1、用 matlab 内置函数 eig 求矩阵的全部特征值;
2、编写求特征值的 QR 算法程序,并用之求矩阵特征值;
3、比较两种方法的结果差异。
( 1) QR 算法的 m 文件
function qrsf(A,r)
[Q,R]=qr(A);
t=A(1,1) %temp
A=R*Q;
for k=1:50
[Q,R]=qr(A);
t=A(1,1);
A=R*Q;
if ( abs( A(1,1)-t )<r )
break ;
end
数值分析实验报告7..
数值分析实验报告7..
5 / 14
数值分析实验报告7..
end
n=size(A,1);
for i=1:n
format long g
disp( [ ' 特征值 λ ' ,num2str(i),
end
%disp('');
for i=1:n
disp( '特征值');
format long g ,A(i,i)
end
format long g ,A,Q,R

'='

,num2str( A(i,i) )] );
数值分析实验报告7..
数值分析实验报告7..
14 / 14
数值分析实验报告7..
( 2)改进后的 QR 算法的 m 文件
function qrsf(A,r)
[Q,R]=qr(A);
%t=A(1,1) %temp
t(1)=max(abs(diag(R)));
A=R*Q;
for k=2:50
[Q,R]=qr(A);
z=diag(A);
t(k)=max(abs(diag(R)));
A=R*Q;
if ( abs( t(k) - t(k-1) ) < r )
break ;
end
end
n=size(A