幂法与反幂法

上传人:M****1 文档编号:557926494 上传时间:2023-03-26 格式:DOC 页数:6 大小:135.77KB
返回 下载 相关 举报
幂法与反幂法_第1页
第1页 / 共6页
幂法与反幂法_第2页
第2页 / 共6页
幂法与反幂法_第3页
第3页 / 共6页
幂法与反幂法_第4页
第4页 / 共6页
幂法与反幂法_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《幂法与反幂法》由会员分享,可在线阅读,更多相关《幂法与反幂法(6页珍藏版)》请在金锄头文库上搜索。

1、幂法与反幂法1 功能幂法是一种计算矩阵主特征值(矩阵按模最大的特征值)及对应特征向量的迭代方法, 特别是用于大型稀疏矩阵。反幂法用来计算矩阵按模最小的特征值及其特征向量,也可用来计算对应与一个给定近似特征值的特征向量。2算法描述2.1 幂法(1)取初始向量u(例如取u=(1,1,1)),置精度要求,置k=1. (2)计算v=Au,m=max(v), u= v/ m(3)若| m= m|,则停止计算(m作为绝对值最大特征值,u作为相应的特征向量)否则置k=k+1,转(2)2.2 反幂法(1)取初始向量u(例如取u=(1,1,1)),置精度要求,置k=1. (2)对A作LU分解,即A=LU(3)解

2、线性方程组 Ly=u,Uv=y(4)计算 m=max(v), u= v/ m(5) 若|m=m|,则停止计算(1/m作为绝对值最小特征值,u作为相应的特征向量);否则置k=k+1,转(3).3 Matlab程序的实现3.1 幂法functionm,u=pow(A,ep,N)%A为矩阵;ep为精度要求;N为最大迭代次数;m为绝对值最大的特征值;u为对应最大特征值的特征向量。N=100;ep=1e-6;n=length(A);u=ones(n,1);index=0;k=0;m1=0;while k=N v=A*u;vmax,i=max(abs(v); m=v(i);u=v/m; if abs(m-

3、m1)ep index=1;break;end m1=m;k=k+1;end输入:A=7 3 -2;3 4 -1;-2 -1 3;m,u=pow(A,1e-6) Enter结果:m = 9.6056 u =1.0000 0.6056 -0.39444.2 反幂法functionm ,u=pow_inv(A,ep,N)%A为矩阵;ep为精度要求;N为最大迭代次数;m为绝对值最大的特征值;u为对应最大特征值的特征向量。N=100;ep=1e-6;n=length(A);u=ones(n,1);index=0;k=0;m1=0;invA=inv(A);while k=N v=invA*u;vmax,

4、i=max(abs(v); m =v(i);u=v/ m ; if abs(m-m1) A=rand(5) %随机产生5*5矩阵 求随机矩阵A = 0.7094 0.1626 0.5853 0.6991 0.1493 0.7547 0.1190 0.2238 0.8909 0.2575 0.2760 0.4984 0.7513 0.9593 0.8407 0.6797 0.9597 0.2551 0.5472 0.2543 0.6551 0.3404 0.5060 0.1386 0.8143 B=A+A %A矩阵和A的转置相加,得到随机对称矩阵BB = 1.4187 0.9173 0.8613

5、 1.3788 0.8044 0.9173 0.2380 0.7222 1.8506 0.5979 0.8613 0.7222 1.5025 1.2144 1.3467 1.3788 1.8506 1.2144 1.0944 0.3929 0.8044 0.5979 1.3467 0.3929 1.6286B=5 C语言程序实现#include stdio.h#include math.h#define M 3void main()float fan(),max(),e1,e2,r1,r2;void au(),ex(),print_x(),std();static float aMM=1.0,

6、1.0,0.5,1.0,1.0,0.25,0.5,0.25,2.0;static float u0M,u1M,maxn0,maxn1;int i;printf(*n);printf(* 幂法 *n);printf(*求特征值与特征向量*n);printf(*nn);printf(input precision e1,e2:);scanf(%f,%f,&e1,&e2);printf(ninput u(%d):,M);for (i=0;ie1 | r2e2)printf(%4d,i+);print_x(u0);printf(n);ex(u0,u1);elsebreak; while (1);voi

7、d au(a,u0,u1)float aM,u0,u1;int i,j;for (i=0;iM;i+)u1i=0;for (j=0;jM;j+)u1i+=aij*u0j;void std(u)float u;int i;float t,max();t=max(u);for (i=0;iM;i+) ui=ui/t;float fan(u0,u1)float u0,u1;float max();int i;float uuM;for (i=0;iM;i+)uui=u0i-u1i;return max(uu);float max(u)float u;int i;float m;m=u0;for (i=0;im)m=ui;return m;void ex(u0,u1)float u0,u1;int i;for (i=0;iM;i+)u0i=u1i;void print_x(u)float u;int i; for (i=0;iM;i+)printf(%12.6f,ui);6 C程序示例调用用幂法求 A= 的特征值和特征向量。运行结果如下:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号