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

数值分析之幂法及反幂法C 语言程序实例

1、算法设计方案:

①求

1、

501 和

s 的 :

s :

s 表示矩 的按模最小特征 , 求得

s 直接 待求矩

A 用反 法即可。

1 、

501 :已知矩

A 的特征 足关系

1

L

n ,要求

1、及

501 ,可按如下

方法求解:

A 用 法,求得按模最大的特征

m1 。

按平移量

m1 矩

A 行原点平移得矩

B

A

m1I

, 矩

B 用反 法求得

B 的按

模最小特征

m2

m3

m2

m1

:1min(m1 , m3 ) ,nmax( m1, m 3 ) 即 所求。

②求和 A 的与数

k

1

k 5011

最接近的特征

ik ( k=0, 1,? 39):

40

求矩 A 的特征 中与

k 最接近的特征 的大小,采用原点平移的方法:

先求矩 B=A-

k I 的按模最小特征

k , k +

k 即 矩 A 与 k 最接近的特征 。

重复以上 程 39 次即可求得

ik ( k=0,1,? 39)的 。

③求 A 的( 范数)条件数

cond( A)2 和行列式 det A :

在( 1)中用反 法求矩

A 的按模最小特征 ,要用到

Doolittle 分解方法,在

Doolittle 分解

完成后得到的两个矩 分

L 和 U, A 的行列式可由

U 求出,即: det(A)=det(U) 。

求得 det(A) 不 0,因此 A 非奇异的 称矩 , :

cond( A) 2

max ,

max 和 s 分 模最大特征 与模最小特征 。

s

2、程序源代码:

#include<>

#include<>

#include<>

#define N 5013e\n",k,k,value_s);

}

}

void main()

{

float cond;

double value_det;

printf("Contact me\n");

Init_matrix_A();3e\n",value_1);

printf("λ 501=%\n",value.13e_N);

value_det=Det_matrix();3e\n",value_s);

cond=Get_cond_A();3e\n",cond);

printf("value_det=%.13e\n",value_det);

}

3、程序运行结果:

4、迭代初始向量的选取对计算结果的影响:

本次计算实习求矩阵A 的具有某些特征的特征值,主要用到的方法是幂法和反幂法,这两种方

法从原理上看都是迭代法,因此迭代初始向量的选择对计算结果会产生一定影响,主要表现在收

敛速度上。

通过实际调试发现,对某些特殊的迭代初始值,确实对收敛结果及收敛速度产生影响,具体如下

所列:

以下结论建立在float 数据类型基础之上;

1.迭代初始 u[i]=c(i=1,2, ?,501) 且 c 的 极大(例如以上),收 果可以 定但收 速度减慢,其原因 c 的数量 与矩 A 中元素数量 差距 大, 致迭代次数以及运算量增大;

2.迭代初始 u[i]=c(i=1,2, ?,501) 且 c 的 极小(例如以下),收 果并不 定,且收 速度减慢,其原因是 算机舍入 差将会影响 算 果;

3.迭代初始 u[i] (i=1,2, ?,501)之 数量 偏差很大(例如倍以上),收 果亦不 定,且收 速度减慢,其原因是人 使迭代 程中的 重 生 大区 ,使迭代复 化。

, 于迭代初始 的 取 尽量与矩 A 中元素数量 保持相近,且 保 相近的数量 。

PS: Further details please Contact me:

2011-11-15

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值