数值分析幂法的c语言算法,数值分析之幂法及反幂法c语言程序实例.doc

41528d3028836879cd698677c3999917.gif数值分析之幂法及反幂法c语言程序实例.doc

数值分析之幂法及反幂法C语言程序实例1、算法设计方案:①求、和的值:150s:表示矩阵的按模最小特征值,为求得直接对待求矩阵A应用反幂法即可。ss、:已知矩阵A的特征值满足关系,要求、及时,可1501n1501按如下方法求解:a.对矩阵A用幂法,求得按模最大的特征值。1mb.按平移量对矩阵A进行原点平移得矩阵,对矩阵B用反幂1m1mBAI法求得B的按模最小特征值。2mc.321mm则:,即为所求。13in(,)13ax(,)nm②求和A的与数最接近的特征值(k=0,1,…39):50114kik求矩阵A的特征值中与最接近的特征值的大小,采用原点平移的方法:k先求矩阵B=A-I对应的按模最小特征值,则+即为矩阵A与最接近kkk的特征值。重复以上过程39次即可求得(k=0,1,…39)的值。ik③求A的(谱范数)条件数和行列式:2cond()AdetA在(1)中用反幂法求矩阵A的按模最小特征值时,要用到Doolittle分解方法,在Doolittle分解完成后得到的两个矩阵分别为L和U,则A的行列式可由U阵求出,即:det(A)=det(U)。求得det(A)不为0,因此A为非奇异的实对称矩阵,则:,和分别为模最大特征值与模最小特征值。max2()scondAas2、程序源代码:#include#include#include#defineN501//列#defineM5//行#defineR2//下带宽#defineS2//上带宽#defineK39#definee1.0e-12//误差限floatA[M][N];//初始矩阵floatu[N];//初始向量floaty[N],yy[N];floatmaximum,value1,value2,value_1,value_N,value_s,value_abs_max;constfloatb=0.16f,c=-0.064f;intmax_sign,max_position;voidInit_matrix_A()//初始化矩阵A{inti;for(i=2;i0;i--){temp=0;for(t=i+1;t>>λi%d=%.13e\n“,k,k,value_s);}}voidmain(){floatcond;doublue_det;printf(“Contactme:731363227@\n“);Init_matrix_A();//初始化矩阵AThe_value();//获取绝对值最大的特征值λ_501The_Other_value();//获取特征值λ_1printf(“λ1=%.13e\n“,value_1);printf(“λ501=%.13e\n“,value_N);value_det=Det_matrix();//求矩阵行列式值Value_min();//反幂法求绝对值最小的特征值printf(“λs=%.13e\n“,value_s);cond=Get_cond_A();//求矩阵条件数Value_translation_min();//偏移条件下反幂法求特征值printf(“cond_A=%.13e\n“,cond);printf(“value_det=%.13e\n“,value_det);}3、程序运行结果:4、迭代初始向量的选取对计算结果的影响:本次计算实习求矩阵A的具有某些特征的特征值,主要用到的方法是幂法和反幂法,这两种方法从原理上看都是迭代法,因此迭代初始向量的选择对计算结果会产生一定影响,主要表现在收敛速度上。通过实际调试发现,对某些特殊的迭代初始值,确实对收敛结果及收敛速度产生影响,具体如下所列:以下结论建立在float数据类型基础之上;1.迭代初始值u[i]=c(i=1,2,…,501)且c的绝对值值极大(例如1.0e12以上),收敛结果可以稳定但收敛速度减慢,其原因为c的数量级与矩阵A中元素数量级差距过大,导致迭代次数以及运算量增大;2.迭代初始值u[i]=c(i=1,2,…,501)且c的绝对值值极小(例如1.0e-12以下),收敛结果并不稳定,且收敛速度减慢,其原因是计算机舍入误差将会影响计算结果;3.迭代初始值u[i](i=1,2,…,501)之间数量级偏差很大(例如1.0e12倍以上),收敛结果亦不稳定,且收敛速度减慢,其原因是人为使迭代过程中的权重发生较大区别,使迭代复杂化。结论,对于迭代初始值的选取应尽量与矩阵A中元素数量级保持相近,且应保证相近的数量级。PS:FurtherdetailspleaseContactme:731363227@2011-11-15

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值