matlab数值分析程序--高等数学,数值代数的matlab实现-文字版, matlab电子书, 和matlab 有关的电子书:

5.2 幂法及其MATLAB程序

5.2  幂法及其MATLAB程序


在实践中,大型矩阵的特征值无法通过特征多项式计算。计算该多项式本身相当费资源,而根的精确表达式对于高次的多项式来说很难计算和表达:阿贝尔-鲁菲尼定理显示五次或更高次的多项式的根无法用n次方根来简单表达。对于估算多项式的根的有效算法是有的,但特征值中的微小误差可以导致特征向量的巨大误差。因此,寻找特征多项式和特征值的一般算法,是迭代法。最简单的方法是幂法:取一个随机向量v,然后计算如下的一系列单位向量

\frac{Av}{||Av||}\frac{A^2v}{||A^2v||}\frac{A^3v}{||A^3v||}, ...

这个序列几乎总是收敛于最大绝对值的特征值所对应的特征向量。这个算法很简单,但是本身不是很有用。但是,象QR算法这样的算法正是以此为基础的[10]。

此外以豪斯霍尔德变换结合LU分解,可以得到比QR分解更快速的收敛特征值矩阵。



幂法主要用于计算矩阵的按模为最大的特征值和相应的特征向量。

基本思想是:
若我们求某个n阶方阵A的特征值和特征向量,先任取一个初始n维向量x(0),构造如下序列:
x(0),x(1)=Ax(0),x(2)=Ax(1),…, x(k)=Ax(k-1) ,… ⑴
当k增大时,序列的收敛情况与绝对值最大的特征值有密切关系,分析这一序列的极限,即可求出按模最大的特征值和特征向量.
假定矩阵A有n个线性无关的特征向量.n个特征值按模由大到小排列:
│λ1│> =│λ2│> =…> =│λn│ ⑵
其相应的特征向量为:
V1 ,V2 , …,Vn ⑶
它们构成n维空间的一组基.任取的初始向量X(0)由它们的线性组合给出
x(0)=a1V1+a2V2+…+anVn ⑷
由此知,构造的向量序列有
x(k) =Ax(k-1) = A2x(k-2) =…=Akx(0) = a1λ1kV1+a2 λ2kV2+…+anλnkVn ⑸
下面按模最大特征值λ1是单根的情况讨论:
由此公式(5)可写成
X(k) = λ1k (a1V1+a2 (λ2/λ1)kV2+…+an(λn/λ1)kVn ) ⑹
若a1≠0,由于|λi/λ1 | <1 (i≥2),故k充分大时,
X(k) = λ1k (a1V1+εk)
其中εk为一可以忽略的小量,这说明X(k)与特征向量V1相差一个常数因子,即使a1=0,由于计算过程的舍入误差,必将引入在方向上的微小分量,这一分量随着迭代过程的进展而逐渐成为主导,其收敛情况最终也将与相同。
特征值按下属方法求得:
λ1 ≈Xj(k+1)/ Xj(k) ⑺
其中Xj(k+1), Xj(k)分别为X(k+1),X(k)的第j各分量。
实际计算时,为了避免计算过程中出现绝对值过大或过小的数参加运算,通常在每步迭代时,将向量“归一化”即用的按模最大的分量 max |Xj(k)| 1≤j≤n 去除X(k)的各个分量,得到归一化的向量Y(k),并令 X(k+1) = AY(k)
由此得到下列选代公式 :
Y(k) = X(k)/║ X(k)║∞
X(k+1) = AY(k) k=0,1,2,… ⑻
当k充分大时,或当║ X(k)- X(k+1)║ <ε时,
Y(k)≈V1
max |Xj(k)| ≈ λ1 ⑼
1≤j≤n 
欢迎转载,转载请注明来自一手册:http://yishouce.com/book/3/3050200.html
友情链接It题库(ittiku.com)| 版权归yishouce.com所有| 友链等可联系 admin#yishouce.com|粤ICP备16001685号-1