C语言实现数值分析中带双步位移的QR分解求特征值算法。
数 值 分 析(B) 大 作 业(二)
1、算法设计:
①矩阵的拟上三角化:
对实矩阵A进行相似变换化为拟上三角矩阵A(n 1),其变换矩阵采用Householder矩阵,变换过程如下:
(r)
若air 0(i r 2, ,n),则Hr I;
否则,sr=(0, ,0,ar+1,r, an,r),
cr= -sgn(ar+1,r)||sr||2,
ur=sr-crer+1 (0, ,0,ar 1,r cr,ar 2,r, ,anr),
Hr=I-2urur/urA
(r 1)
(r)(r)T
(r)
(r)(r)(r)
T
22
,
HrA
(r)
Hr。
(n 1)(n 2)(1)
Hn 2AHn 2 Hn 2 H1AH1 Hn 2,当r n 2时,得A
令P=H1H2 Hn-2又Hr是对称正交矩阵,于是An-1=PTAP成立,因而An-1与 A相似。
②矩阵的QR分解:
矩阵的QR分解过程与拟上三角化过程相似,在这里不再重复其原理。 ③求全部特征值
矩阵拟上三角化后利用带双步位移的QR方法,采用书本Page 63页具体算法实现。为了使编程方便,并体会goto语句使用的灵活性,程序中的跳转均使用goto Loop*实现。
④求A的相应于实特征值的特征向量
求实特征值对应的特征向量,即是求解线性方程组(λiI-A)xi=0,
(i 1, ,n)。因此,为得到全部实特征值对应的特征向量,解线性方程组的过
程要循环n次(n为矩阵阶数)。线性方程组的求解采用列主元素Gauss消去法。