数值分析第二次大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数值分析》计算实习报告
第二题
院系:机械工程及自动化学院
学号:
姓名:
2017年11月
一、题目要求
试求矩阵A =[a ij ]10×10的全部特征值,并对其中的每一个实特征值求相应的特征向量,已知
a ij ={
sin (0.5i +0.2j ) i ≠j
1.52cos (i +1.2j ) i =j
(i,j =1,2, (10)
说明:
1.用带双步位移的QR 方法求矩阵特征值,要求迭代的精度水平为ε=10−12。
2.打印以下内容: (1)全部源程序;
(2)矩阵A 经过拟上三角化后所得的矩阵A (n−1); (3)对矩阵A (n−1)实行QR 方法迭代结束后所得的矩阵;
(4)矩阵A 的全部特征值λi =(R i ,I i ) (i =1,2,⋯,10),其中R i =Re(λi ),I i = Im(λi ) 。若λi 是实数,则令I i =0; (5)A 的相应于实特征值的特征向量。
3.采用e 型数输出实型数,并且至少显示12位有效数字。
二、算法设计思路和方案
1. 将矩阵A 拟上三角化得到矩阵A (n−1)
为了减少计算量,一般先利用Householder 矩阵对矩阵A 作相似变换,把A 化为拟上三角矩阵A (n−1),然后用QR 方法计算A (n−1)的全部特征值,而A (n−1)的特征值就是A 的特征值。具体算法如下:
记(1)A A =,()r A 的第r 列至第n 列的元素为(r)(1,2,
,;,1,,)ij a i n j r r n ==+。
对于1,2,,2r n =-执行
(1)若()
(2,3,,)r ir
a i r r n =++全为零,则令(1)()r r A A +=,转(5);否则转(2)。
(2)计算
r d =
()()
1,sgn r r r r r c a d +=- (若()1,0r r r a +=,则取r r c d =)
2()
1,r r r r r r h c c a +=-
(3)令()
()
()()1,2,0,,0,,,,T r r r n r r r
r r r
nr
u a
c a
a
R ++=-∈。
(4)计算
()()(1)()///r T r r r r r r r
T
r r r r
r r r r
r r T T r r r r
p A u h q A u h t p u h q t u A A u u p ωω+====-=--
(5)继续。
当此算法执行完后,就得到与原矩阵A 相似的拟上三角矩阵A (n−1)。 2.用带双步位移的QR 方法求矩阵A 全部特征值
为了加速收敛,采用带双步位移的QR 方法求解A 的全部特征值,具体算法如下:
(1)由步骤1得到拟上三角矩阵(1)n A -;给定精度水平0ε> 和最大迭代次数L 。
(2)记(1)(1)1=n ij n n
A A a -⨯⎡⎤=⎣⎦
,令k = 1,m = n 。
(3)如果()
,1k m m a ε-≤,则得到A 的一个特征值()k mm a ,置m:=m-1(降阶)
,转(4);否则转(5)。
(4)如果2m ≤,则得到矩阵A 的一个特征值()11k a ,或两个特征值12,s s ,转
(9);否则转(3)。
(5)如果()1,2k m m a ε--≤,则得到A 的两个特征值12,s s ,置m : = m – 2(降阶),转(4);否则转(6)。
(6)如果k = L ,则终止计算,未得到A 的全部特征值;否则转(7)。
(7)记()
(1,)k k ij m m A a i j m ⨯⎡⎤=≤≤⎣⎦,计算
()()
1,1()()()()1,1,11,21)
() (k k m m mm
k k k k m m mm m m m m
k k k k k k k T k k k k
s a a t a a a a M A sA tI I m M Q R M QR A Q A Q ------+=+=-=-+==是阶单位矩阵对作分解 (8)置k : = k + 1,转(3)。
(9)A 的全部特征值已计算完毕,停止计算。 其中,k M 的QR 分解与1k A +的计算用下列算法实现:
记(1)()
11[],[],r k ij m m r ij m m k B M b B b C A ⨯⨯====。
对于1,2,,1r m =-执行
(1)若()()1,2,,r ir b i r r m =++全为零,则令11,r r r r B B C C ++==,转(5)
;否则转(2)。
(2)计算
()()()()
1,2()sgn 0,r r r r rr r r r r r r r r r rr
d c b d a c d h c c b +=
=-===-若则取 (3)令()()()()
1,0,,0,,,
,T
r r r m r rr r r r mr u b c b b R +=-∈。
(4)计算
11////T r r r r T r r r r T r r r r r r r r
T
r r r r
r r r r
T T r r r r r r
v B u h B B u v p C u h q C u h t p u h q t u C C u u p ωω++==-====-=--
(5)继续。
此算法执行完后,得到1k m A C +=。 3.用列主元素Gauss 消去法求特征向量
记λ为矩阵A 的实特征值,x 为对应的特征向量,则A x =λx ,即(A - λ)x = 0的解即为矩阵A 的特征向量。因此对于特征向量的求解可采用列主元素Gauss 消去法。
0A I λ-=,经检查由于矩阵A 无重特征值,所以每个特征值对应的特征向量的线性空间为1,矩阵A I λ-的秩为N-1,经过列主元素Gauss 消去法消元后,矩阵有且仅有最后一行全为0。此时设定1n x =-,再依次求出
()1,2,,1k x k n n =--,就可得到对应λ的其中一个特征向量12(,,
,)T n x x x x =,
对应λ的全部特征向量可表示为k x 。最后为了得到标准形式,将向量x 正交化。
具体算法如下。 1. 消元过程 对于1,2,
,1k n =-执行
(1)选行号k i ,使()()
max k k k i k ik k i n
a a ≤≤=。
(2)交换()k kj a 与()(,1,
,)k k i j a j k k n =+所含的数值。
(3)对于1,2,,i k k n =++计算