数值分析幂法课程设计.docx

上传人:b****0 文档编号:12584809 上传时间:2023-04-20 格式:DOCX 页数:13 大小:181.38KB
下载 相关 举报
数值分析幂法课程设计.docx_第1页
第1页 / 共13页
数值分析幂法课程设计.docx_第2页
第2页 / 共13页
数值分析幂法课程设计.docx_第3页
第3页 / 共13页
数值分析幂法课程设计.docx_第4页
第4页 / 共13页
数值分析幂法课程设计.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

数值分析幂法课程设计.docx

《数值分析幂法课程设计.docx》由会员分享,可在线阅读,更多相关《数值分析幂法课程设计.docx(13页珍藏版)》请在冰豆网上搜索。

数值分析幂法课程设计.docx

数值分析幂法课程设计

课程设计报告

课程名称计算方法课程设计

课题名称用幂法求矩阵的最大特征值

专业

班级

学号

姓名

指导教师聂存云,赵钍焱

 

2011年06月20日

湖南工程学院

课程设计任务书

 

课程名称计算方法

课题用幂法求矩阵的最大特征值

 

专业班级信息科学0801

学生姓名李奋勇

学号200810010120

指导老师聂存云,赵钍焱

审批

 

任务书下达日期2011年6月16日

任务完成日期2011年6月20日

 

目录

 

1.设计内容与设计要求………………………………………………………3

 

2.问题的描述及算法设计……………………………………………………4

 

3.算法的流程图………………………………………………………………4

 

4.算法的理论依据及其推导…………………………………………………4

 

5.相关的数值结果……………………………………………………………8

 

6.数值计算结果的分析………………………………………………………9

 

7.附件…………………………………………………………………………10

 

8.总结…………………………………………………………………………12

 

一、设计内容与设计要求

1.设计内容:

对课程《计算方法》中的常见算法进行综合设计或应用(具体课题题目见后面的供选题目)。

2.设计要求:

●课程设计报告正文内容

a.问题的描述及算法设计;

b.算法的流程图(要求画出模块图);

c.算法的理论依据及其推导;

d.相关的数值结果(通过程序调试),;

e.数值计算结果的分析;

f.附件(所有程序的原代码,要求对程序写出必要的注释)。

●书写格式

a.要求用A4纸打印成册

b.正文格式:

一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。

c.正文的内容:

正文总字数要求在3000字左右(不含程序原代码)。

d.封面格式如下页。

●考核方式

指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,并按优秀、良好、中等、及格和不及格五个等级给出每位同学的课程设计成绩。

具体考核标准包含以下几个部分:

a.平时出勤(占10%)

b.系统需求分析、功能设计、数据结构设计及程序总体结构合理与否(占10%)

c.程序能否完整、准确地运行,个人能否独立、熟练地调试程序(占40%)

d.设计报告(占30%)

注意:

不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。

e.独立完成情况(占10%)。

●课程验收要求

a.判定算法设计的合理性,运行相关程序,获得正确的数值结果。

b.回答有关问题。

c.提交课程设计报告。

d.提交软盘(源程序、设计报告文档)。

e.依内容的创新程度,完善程序情况及对程序讲解情况打分。

3、进度安排

1、班级:

信息与计算科学:

0501、0502、0503

2、主讲教师:

聂存云

3、辅导教师:

聂存云、赵钍焱

4、时间安排:

第16周星期一8时:

00分——16时:

30分

星期三8时:

00分——16时:

30分

星期五8时:

00分——16时:

30分

星期天8时:

00分——11时:

00分

 

二、问题的描述及算法设计

对于给定矩阵A用幂法求解矩阵A的最大特征值;本算法用于求矩阵

按模最大的特征值及其相应特征向量。

程序执行后,先通过键盘输入矩阵

、迭代初值向量

、精度控制

和迭代允许最大次数

,程序即可给出每次迭代的次数和对应的迭代特征值、特征向量及误差序列,它们都按10位有效数输出。

其中最后输出的结果即为所求的特征值和特征向量序列。

如果迭代超出

次还没有求出满足精度的根则输出迭代超限提示,此时可以根据输出序列判别收敛情况。

 

三、算法的描述;

(1)输入矩阵

、初始向量

,误差

(2)

(3)计算

(4)

(5)

(6)如果

则显示特征值

和对应的特征向量

),终止;

(7)

转(3)

注:

如上算法中的符号

表示取向量

中绝对值最大的分量。

本算法使用了数据规范化处理技术以防止计算过程中出现益出错误。

 

四、算法的理论依据及其推导;

幂法是通过求矩阵特征向量来求出特征值的一种迭代法.其基本思想是:

若我们求某个n阶方阵A的特征值和特征向量,先任取一个初始向量X(0),构造如下序列:

X(0),X

(1)=AX(0),X

(2)=AX

(1),…,X(K)=AX(K+1),…⑴

当k增大时,序列的收敛情况与绝对值最大的特征值有密切关系,分析这一序列的极限,即可求出按模最大的特征值和特征向量.

假定矩阵A有n个线性无关的特征向量.n个特征值按模由大到小排列:

│λ1│>=│λ2│>=…>=│λn│⑵

其相应的特征向量为:

V1,V2,…,Vn⑶

它们构成n维空间的一组基.任取的初始向量X(0)由它们的线性组合给出

X(0)=a1V1+a2V2+…+anVn⑷

由此知,构造的向量序列有

X(k)=AX(k-1)=A2X(k-2)=…=AkX(0)=a1λ1kV1+a2λ2kV2+…+anλnkVn⑸

下面按模最大特征值λ1是单根的情况讨论:

由此公式(5)可写成

X(k)=λ1k(a1V1+a2(λ2/λ1)kV2+…+an(λn/λ1)kVn)⑹

若a1≠0,由于|λi/λ1|<1(i≥2),故k充分大时,

X(k)=λ1k(a1V1+εk)

其中εk为一可以忽略的小量,这说明X(k)与特征向量V1相差一个常数因子,即使a1=0,由于计算过程的舍入误差,必将引入在方向上的微小分量,这一分量随着迭代过程的进展而逐渐成为主导,其收敛情况最终也将与相同。

特征值按下属方法求得:

λ1≈Xj(k+1)/Xj(k)⑺

其中Xj(k+1),Xj(k)分别为X(k+1),X(k)的第j各分量。

实际计算时,为了避免计算过程中出现绝对值过大或过小的数参加运算,通常在每步迭代时,将向量“归一化”即用的按模最大的分量max|Xj(k)|1≤j≤n

去除X(k)的各个分量,得到归一化的向量Y(k),并令X(k+1)=AY(k)

由此得到下列选代公式:

Y(k)=X(k)/║X(k)║∞

X(k+1)=AY(k)k=0,1,2,…⑻

当k充分大时,或当║X(k)-X(k+1)║<ε时,

Y(k)≈V1

max|Xj(k)|≈λ1⑼

1≤j≤n

 

五、相关的数值结果(通过程序调试),;

 

 

六、数值计算结果的分析;

对于同一个矩阵,给定不同的处值及精度计算出的结果如下

 

 

七、附件

#include

#include

#include

#defineeps1e-6

intmain()

{

floatMaxline(float*p);

floatMatrix[16][16]={0},x[16]={0},Init[16]={0},fore[16]={0};

floatMaxCV=0,eps2=100;

inti=0,j=0,t=0,col=0;

printf("TheMatrix'scolis:

");

scanf("%d",&col);

printf("TheMatrixis\n");

for(i=0;i

{

for(j=0;j

{

scanf("%f",&Matrix[i][j]);

}

}

printf("TheInitis\n");

for(i=0;i

{

scanf("%f",&Init[i]);

}

for(j=0;j<10;j++)

{

MaxCV=Maxline(Init);

for(i=0;i

{

x[i]=(Init[i]/MaxCV);

}

for(i=0;i

{

printf("%.4f\t",Init[i]);

}

printf("\t%.4f\t\t",MaxCV);

for(i=0;i

{

printf("%.4f\t",x[i]);

}

for(i=0;i

{

fore[i]=Init[i];

Init[i]=0;

for(t=0;t

{

Init[i]+=(Matrix[i][t]*x[t]);

}

if(fabs(Init[i]-fore[i])

{

eps2=fabs(Init[i]-fore[i]);

}

}

printf("\n");

if(eps2

break;

}

getch();

}

floatMaxline(float*p)

{

floatmax=0;

inti=0;

for(i=0;*(p+i)!

='\0';i++)

{

if(max<*(p+i))

{

max=*(p+i);

}

}

returnmax;

}

 

八,总结

在这次的编程练习中我学到了很多东西,在多次的c编程中我学会了种种不同的有效算法,并且更熟练的掌握了一些编程技巧。

在多次的编写,调试和运行程序中我更加深刻的了解了一些算法的优越性和一些问题。

这是我在以后的编程过程中更加深刻的思考和努力的学习。

 

数理系课程设计评分表

课程名称:

项目

评价

设计方案的合理性与创造性

设计与调试结果

设计说明书的质量

答辩陈述与回答问题情况

课程设计周表现情况

综合成绩

教师签名:

日期:

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 教育学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1