应用计算方法教程?matlab 作业二
作业六
6-1 试验目的
计算特色值,实现算法
试验内容:随机产生一个 10 阶整数矩阵,各数均在 -5 和 5 之间。
(1〕 用 MATLAB函数“ eig 〞求矩阵全部特色值。
(2〕 用幂法求 A 的主特色值及对应的特色向量。
〔3〕
原理
用根本 QR 算法求全部特色值〔可用
2
MATLAB函数“ qr 〞实现矩阵的 QR 分解〕。
1
幂法: 设矩阵 A 的特色值为 |
1
|>|
|
|
n
|并设 A 有完好的特色向量系
,
2
, ,
n
(它们线
1
性没关 ),那么对任意一个非零向量
V
0
R
n
所构造的向量序列 V
k
AV
k 1
有
lim
(V
k
)
j
k
,其中
(V
k 1
)
j
(V
k
)
j
表示向量的第 j 个重量。
为防范逐次迭代向量
1
V
k
不为零的重量变得很大〔 |
| 1
时〕或很小〔 |
1
| 1
时〕,将每一
步的 V
k
按其模最大的元素进行归一化。详尽过程以下:
选择初始向量 V
0
1
, 令 m
k
1
max(V
k
),U
k
V
k
,V
k 1
AU
k
, k 1 , 当 k
m
k
充分大时
U
k
,max(V
k 1
)
。
max(
1
)
QR 法求全部特色值:
A A
1
Q
1
R
1
R Q
1
A
2
Q
2
R
2
1
, k 1,2,3,
R
k
Q
k
A
k 1
Q
k 1
R
k 1
由于此题的矩阵是 10 阶的,上述算法计算时间过长,考虑采用改良算法——移位加速。迭代
格式以下:
A
k
q
k
I Q
k
R
k
A
k
1
R
k
Q
k
q
k
I
计算 A
k
右下角的二阶矩阵
a
n
(k
1,n
)
a
( k )
1
a
n
(k
1,
)
n
a
( k )
的特色值
(k )
n 1
,
n
,当
( k ) (k )
n 1
,
n
为实数时,选
q
k
为
( k )
n,nn, n 1
n
(k
1
,
n
) ( k )
中最凑近
a
n
(k
,n
)
的。
程序
A=-5+round(10*rand(10));
[V,D]=eig(A)
[lamda u]=lab6_2_power(A,[1;1;1;1;1;1;1;1;1;1],10^(-5),1000)
d=lab6_3_qr2(A,10^(-5))
function
lamda=0;
err=1;
[lamda u]=lab6_2_power(a,v,eps,N)