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

253b171540df25e1b84436cbe50dfc72.gif数值分析之幂法及反幂法C语言程序实例.doc

数值分析之幂法及反幂法 C 语言程序实例1、算法设计方案求 、 和 的值150s 表示矩阵的按模最小特征值,为求得 直接对待求矩阵 A 应用反幂法即可。s s、 已知矩阵 A 的特征值满足关系 ,要求 、及 时,可150 1n 1501按如下方法求解a 对矩阵 A 用幂法,求得按模最大的特征值 。1mb 按平移量 对矩阵 A 进行原点平移得矩阵 ,对矩阵 B 用反幂1m 1mBAI法求得 B 的按模最小特征值 。2mc 321mm则 , 即为所求。13in,13ax,nm求和 A 的与数 最接近的特征值 (k0,1,39)50114kik求矩阵 A 的特征值中与 最接近的特征值的大小,采用原点平移的方法k先求矩阵 BA- I 对应的按模最小特征值 ,则 即为矩阵 A 与 最接近kkk的特征值。重复以上过程 39 次即可求得 (k0 ,1,39)的值。ik求 A 的(谱范数)条件数 和行列式 2condAdetA在(1)中用反幂法求矩阵 A 的按模最小特征值时,要用到 Doolittle 分解方法,在Doolittle 分解完成后得到的两个矩阵分别为 L 和 U,则 A 的行列式可由 U 阵求出,即detAdetU。求得 detA不为 0,因此 A 为非奇异的实对称矩阵,则, 和 分别为模最大特征值与模最小特征值。max2scondAas2、程序源代码includeincludeincludedefine N 501 列define M 5 行define R 2 下带宽define S 2 上带宽define K 39define e 1.0e-12 误差限float AMN; 初始矩阵float uN; 初始向量float yN,yyN;float maximum,value1,value2,value_1,value_N,value_s,value_abs_max;const float b0.16f,c-0.064f;int max_sign,max_position;void Init_matrix_A 初始化矩阵 Aint i;fori2;i0;itemp0;forti1;tid.13en“,k,k,value_s;void mainfloat cond;double value_det;printf“Contact me n“;Init_matrix_A; 初始化矩阵 AThe_value; 获取绝对值最大的特征值 _501The_Other_value;获取特征值 _1printf“1.13en“,value_1;printf“501.13en“,value_N;value_detDet_matrix;求矩阵行列式值Value_min; 反幂法求绝对值最小的特征值printf“s.13en“,value_s;condGet_cond_A; 求矩阵条件数Value_translation_min;偏移条件下反幂法求特征值printf“cond_A.13en“,cond;printf“value_det.13en“,value_det;3、程序运行结果4、迭代初始向量的选取对计算结果的影响本次计算实习求矩阵 A 的具有某些特征的特征值,主要用到的方法是幂法和反幂法,这两种方法从原理上看都是迭代法,因此迭代初始向量的选择对计算结果会产生一定影响,主要表现在收敛速度上。通过实际调试发现,对某些特殊的迭代初始值,确实对收敛结果及收敛速度产生影响,具体如下所列以下结论建立在 float 数据类型基础之上;1.迭代初始值 uici1,2501且 c 的绝对值值极大(例如 1.0e12 以上) ,收敛结果可以稳定但收敛速度减慢,其原因为 c 的数量级与矩阵 A 中元素数量级差距过大,导致迭代次数以及运算量增大;2.迭代初始值 uici1,2501且 c 的绝对值值极小(例如 1.0e-12 以下) ,收敛结果并不稳定,且收敛速度减慢,其原因是计算机舍入误差将会影响计算结果;3.迭代初始值 ui i1,2501之间数量级偏差很大(例如 1.0e12 倍以上) ,收敛结果亦不稳定,且收敛速度减慢,其原因是人为使迭代过程中的权重发生较大区别,使迭代复杂化。结论,对于迭代初始值的选取应尽量与矩阵 A 中元素数量级保持相近,且应保证相近的数量级。PS Further details please Contact me 2011-11-15

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值