1、3 matlab程序代码 function t,y=lpowerA,x0,eps,N) % t 为所求特征值,y是对应特征向量 k=1; z=0; % z 相当于 y=x0./max(abs(x0); % 标准化初始向量 x=A*y; % 迭代格式 b=max(x); % b 相当于 if abs(z-b)eps & kN k=k+1; z=b; y=x./max(abs(x); m,index=max(abs(x); % 这两步保证取出来的按模最大特征值 t=x(index); % 是原值,而非其绝对值。end4 举例验证 选取一个矩阵A,代入程序,得到结果,并与eig(A)的得到结果比拟,
2、再计算 A*y-t*y,验证y是否是对应的特征向量。结果如下:结果正确,说明算法和代码正确,然后利用此程序计算15阶Hilb矩阵,与eig(A)的得到结果比拟,再计算 A*y-t*y,验证y是否是对应的特征向量。设置初始向量为x0=ones(15,1),结果显示如下可见,结果正确。得到了15阶Hilb矩阵的按模最大特征值和对应的特征向量。二.反幂法1.反幂法简介及其理论在工程计算中,可以利用反幂法计算矩阵按模最小特征值及其对应特征向量。其根本理论如下,与幂法根本一样:,可知,A和A-1的特征值互为倒数,求A按模最小特征值即求A-1的按模最大特征值,取倒数即为A的按模最小特征值所以算法根本一样,
3、区别就是在计算2.算法实现function s,y=invpower(A,x0,eps,n) % s 为按模最小特征值,y是对应特征向量 r=0; % r相当于 L,U=lu(A); z=Ly; x=Uz; u=max(x); s=1/u; % 按模最小为A-1按模最大的倒数. if abs(u-r)n % 终止条件. r=u;s=1/x(index);同幂法一样,选取一个矩阵A,代入程序,得到结果,并与eig(A)的得到结果比拟,再计算 A*y-t*y,验证y是否是对应的特征向量。可见结果正确,然后利用此程序计算15阶Hilb矩阵,eig(A)的得到结果比拟,再计算 A*y-s*y,验证y是
4、否是对应的特征向量。可见,结果真确。三. 计算条件数矩阵A的条件数等于A的范数与A的逆的范数的乘积,即cond(A)=AA(-1),对应矩阵的3种范数,可以定义3种条件数。 函数 cond(A,1)、cond(A)或cond(A inf)是判断矩阵病态与否的一种度量,条件数越大说明矩阵的病态程度越大.,而如果A为对称矩阵,如Hilb矩阵,的最大最小特征值,分别为A的最大最小特征值的平方。所以cond(A) 为A的最大最小特征值得比值。对于本例中的15阶Hilb矩阵来说,利用上面计算结果得其条件数(选择第二种条件数为:3.0934e+017;这与直接利用cond(A)得到的结果:2.5083e+
5、017 在同一数量级,再次说明了上述算得得最大最小特征值的正确性,同时又说明Hilb矩阵是病态矩阵。四.Aitken商加速法1.简介与原理同幂法和反幂法计算最大和最小特征值类似,如果计算最大特征值,那么迭代格式为;计算最小特征值时,迭代格式为计算按模最大特征值算法如下:类似幂法和反幂法可以写出按模最小特征值算法,此处不再赘述。3.matlab 程序代码function r,y=aitken(A,x0,eps,n) % r按模最大特征值,y为对应特征向量 a0=0; % a 相当于 a1=1; % a1 相当于 r0=1; % 相当于2中的 a2=max(abs(x); % a2相当于 r=a0
6、-(a1-a0)2/(a2-2*a1+a0); % 相当于 if (a2-2*a1+a0)=0 % 假设上式中分母为0,那么迭代失败,返回 disp 初始向量迭代失败 if abs(r-r0)n % 终止条件 a0=a1; a1=a2; r0=r; if (a2-2*a1+a0)=0 % 假设分母为0,那么迭代失败,返回 m,index=max(abs(eig(A); % 以下代码保证取出来的按模最大特征值 aa=eig(A); if aa(index)0 |aa(index)=0 r=r; else r=-r; end end 类似可得按模最小特征值和特征向量的代码如下:与上面类似,所不同的
7、只是迭代格式不同.function r,y=invaitken(A,x0,eps,n) % 迭代格式的不同 if (a2-2*a1+a0)=0 if abs(r-r0) r=1/r; r=-1/r;4. 计算Hilb矩阵特征值此处不再举例,而是直接应用于15阶Hilb矩阵,初始向量选为ones(15,1),结果如下,并将结果与幂法和反幂法得到结果比拟这与幂法得到的特征值和特征向量一致,说明算法和代码正确;同理,最小特征值结果如下: 这与反幂法得到的结果一致,说明结果正确。五,对称矩阵的Rayleigh商加速法原理如下:2. 算法实现3. Matlab程序代码function r,y=rayleigh(A,x0,eps,n) % r 是特征值,y是特征向量 r0=0; % 迭代格式计算新的x r=dot(y,x)/dot(y,y); % Reyleigh商epsn 类似得计算按模最小特征值的Rayleigh商加速法,如下:function r,y=invrayleigh(A,x0,eps,n)r0=0; % 迭代格式不同 这与幂法得到结果一致,说明算法和代码正确。同理,最小特征值如下: 与反幂法得到结果一致,说明代码和算法正确。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1