1、数值分析幂法课程设计课 程 设 计 报 告课程名称 计算方法课程设计 课题名称 用幂法求矩阵的最大特征值 专 业 班 级 学 号 姓 名 指导教师 聂存云,赵钍焱 2011年 06 月 20 日湖 南 工 程 学 院课 程 设 计 任 务 书课程名称 计算方法 课 题 用幂法求矩阵的最大特征值 专业班级 信息科学0801 学生姓名 李奋勇 学 号 200810010120 指导老师 聂存云,赵钍焱 审 批 任务书下达日期 2011 年 6 月 16 日任务完成日期 2011年 6 月 20 日目录1.设计内容与设计要求32.问题的描述及算法设计43.算法的流程图44.算法的理论依据及其推导45
2、.相关的数值结果86.数值计算结果的分析9 7.附件10 8.总结12一、设计内容与设计要求1设计内容: 对课程计算方法中的常见算法进行综合设计或应用(具体课题题目见后面的供选题目)。2设计要求: 课程设计报告正文内容a. 问题的描述及算法设计;b. 算法的流程图(要求画出模块图);c. 算法的理论依据及其推导;d. 相关的数值结果(通过程序调试),;e. 数值计算结果的分析;f. 附件(所有程序的原代码,要求对程序写出必要的注释)。 书写格式a要求用A4纸打印成册b正文格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。c正文的内容:正文总字数要求在3000字左右
3、(不含程序原代码)。d封面格式如下页。 考核方式指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,并按优秀、良好、中等、及格和不及格五个等级给出每位同学的课程设计成绩。具体考核标准包含以下几个部分:a平时出勤 (占10%)b系统需求分析、功能设计、数据结构设计及程序总体结构合理与否(占10%)c程序能否完整、准确地运行,个人能否独立、熟练地调试程序(占40%)d设计报告(占30%)注意:不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。e独立完成情况(占10%)。 课程验收要求a判定算法设计的合理性,运行相关程序,获得正确的数值结果。
4、b回答有关问题。c提交课程设计报告。d提交软盘(源程序、设计报告文档)。e依内容的创新程度,完善程序情况及对程序讲解情况打分。3、进度安排1、 班级: 信息与计算科学:0501、0502、05032、 主讲教师:聂 存 云3、 辅导教师:聂 存 云、赵 钍 焱4、 时间安排:第 16 周 星期一 8时:00分16时:30分 星期三 8时:00分16时:30分 星期五 8时:00分16时:30分 星期天 8时:00分11时:00分二、 问题的描述及算法设计 对于给定矩阵A用幂法求解矩阵A的最大特征值;本算法用于求矩阵按模最大的特征值及其相应特征向量。程序执行后,先通过键盘输入矩阵、迭代初值向量、
5、精度控制和迭代允许最大次数,程序即可给出每次迭代的次数和对应的迭代特征值、特征向量及误差序列,它们都按10位有效数输出。其中最后输出的结果即为所求的特征值和特征向量序列。如果迭代超出次还没有求出满足精度的根则输出迭代超限提示,此时可以根据输出序列判别收敛情况。三、 算法的描述;(1)输入矩阵、初始向量,误差;(2);(3)计算;(4);(5);(6)如果,则显示特征值和对应的特征向量),终止; (7),转(3)注:如上算法中的符号表示取向量中绝对值最大的分量。本算法使用了数据规范化处理技术以防止计算过程中出现益出错误。四、 算法的理论依据及其推导; 幂法是通过求矩阵特征向量来求出特征值的一种迭
6、代法.其基本思想是:若我们求某个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(
7、k-1) = A2X(k-2) =AkX(0) = a11kV1+a2 2kV2+annkVn 下面按模最大特征值1是单根的情况讨论: 由此公式(5)可写成 X(k) = 1k (a1V1+a2 (2/1)kV2+an(n/1)kVn ) 若a10,由于|i/1 |1 (i2),故k充分大时, X(k) = 1k (a1V1+k) 其中k为一可以忽略的小量,这说明X(k)与特征向量V1相差一个常数因子,即使a1=0,由于计算过程的舍入误差,必将引入在方向上的微小分量,这一分量随着迭代过程的进展而逐渐成为主导,其收敛情况最终也将与相同。特征值按下属方法求得: 1 Xj(k+1)/ Xj(k) 其
8、中Xj(k+1), Xj(k)分别为X(k+1),X(k)的第j各分量。 实际计算时,为了避免计算过程中出现绝对值过大或过小的数参加运算,通常在每步迭代时,将向量“归一化”即用的按模最大的分量 max |Xj(k)| 1jn去除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 1jn五、 相关的数值结果(通过程序调试),; 六、 数值计算结果的分析;对于同一个矩阵,给
9、定不同的处值及精度计算出的结果如下七、 附件 #include #include#include#define eps 1e-6int main() float Maxline(float* p); float Matrix1616 = 0 , x16 = 0 , Init16 = 0 , fore16 = 0; float MaxCV = 0 , eps2 = 100; int i = 0 , j = 0 , t = 0 , col = 0; printf(The Matrixs col is : ); scanf(%d , &col); printf(The Matrix is n); f
10、or(i = 0 ; i col ; i +) for(j = 0 ; j col ; j +) scanf(%f , &Matrixij); printf(The Init is n); for(i = 0 ; i col ; i +) scanf(%f , &Initi); for(j = 0 ; j 10 ; j +) MaxCV = Maxline(Init); for(i = 0 ; i col ; i +) xi = (Initi / MaxCV); for(i = 0 ; i col ; i +) printf(%.4ft , Initi); printf(t%.4ftt , M
11、axCV); for(i = 0 ; i col ; i +) printf(%.4ft , xi); for(i = 0 ; i col ; i +) forei = Initi; Initi = 0; for(t = 0 ; t col ; t +) Initi += (Matrixit * xt); if(fabs(Initi - forei) eps2) eps2 = fabs(Initi - forei); printf(n); if(eps2 eps) break; getch();float Maxline(float* p) float max = 0; int i = 0; for(i = 0 ; *(p + i) != 0 ; i +) if(max *(p + i) max = *(p + i); return max;八,总结 在这次的编程练习中我学到了很多东西,在多次的c编程中我学会了种种不同的有效算法,并且更熟练的掌握了一些编程技巧。在多次的编写,调试和运行程序中我更加深刻的了解了一些算法的优越性和一些问题。这是我在以后的编程过程中更加深刻的思考和努力的学习。数理系课程设计评分表课程名称: 项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩 教师签名: 日 期:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1