1、一元非线性方程求解数值分析课 程 设 计 报 告课程名称 课题名称 专 业 班 级 学 号 姓 名 指导教师 年 月 日湖 南 工 程 学 院课 程 设 计 任 务 书课程名称 计算方法 课 题 专业班级 学生姓名 学 号 指导老师 审 批 任务书下达日期 2007 年 6 月 9 日任务完成日期 2007 年 6 月 20日一、设计内容与设计要求1设计内容: 对课程计算方法中的常见算法进行综合设计或应用(具体课题题目见后面的供选题目)。2设计要求: 课程设计报告正文内容a. 问题的描述及算法设计;b. 算法的流程图(要求画出模块图);c. 算法的理论依据及其推导;d. 相关的数值结果(通过程
2、序调试),;e. 数值计算结果的分析;f. 附件(所有程序的原代码,要求对程序写出必要的注释)。 书写格式a要求用A4纸打印成册b正文格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。c正文的内容:正文总字数要求在3000字左右(不含程序原代码)。d封面格式如下页。 考核方式指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,并按优秀、良好、中等、及格和不及格五个等级给出每位同学的课程设计成绩。具体考核标准包含以下几个部分:a平时出勤 (占10%)b系统需求分析、功能设计、数据结构设计及程序总体结构合理与否(占10
3、%)c程序能否完整、准确地运行,个人能否独立、熟练地调试程序(占40%)d设计报告(占30%)注意:不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。e独立完成情况(占10%)。 课程验收要求a判定算法设计的合理性,运行相关程序,获得正确的数值结果。b回答有关问题。c提交课程设计报告。d提交软盘(源程序、设计报告文档)。e依内容的创新程度,完善程序情况及对程序讲解情况打分。三、进度安排1、 班级: 信息与计算科学:0501、0502、05032、 主讲教师:聂 存 云3、 辅导教师:聂 存 云、赵 钍 焱4、 时间安排:第 16 周 星期一 8时:30分11时:30分 星期二 8时:3
4、0分11时:30分 星期四 8时:30分11时:30分 星期五 8时:30分11时:30分1 问题的描述:给定函数f(x)= -x-4x+10 要求用一下四种方法球的该一次非线性函数的零点(1)Fixed-point iteration (2)Newton iteration (3)Secant iteration (4)Aitken method 算法设计 用简单的程序加上已经推导出的公式即可以将该函数的零点算出2 算法的流程图(1) Fixed-point 的算法流程图 图1 不动点迭代流程(2) Newton iteration 算法的流程图 图2 牛顿迭代算法流程图(3) Secant
5、 iteration 算法流程图 图3 割线算法流程图(4) Aitken method 算法流程图 图4 加速算法流程图针对以上四个图形的说明:x0,x1 :初值i :迭代的次数N0: 总的迭代次数Y: 是 N:否error: 误差TOL: 精度要求。3 算法的理论依据:(1) Fixed-point iteration 理论依据是利用了函数的不动点定理即函数在某一个自变量处的函数值与该自变量相等(x=g(x))(2) Newton iteration 理论依据是利用了切线原理,首先得到函数在初值点处切线与直线y=0的交点,然后用该交点作为下一轮迭代的初值点(x=x0-f(x0)/f(x0)
6、(3) Secant iteration 的理论依据是利用了割线与直线y=0的交点得到,已知两个初值点求得两的函数值在函数曲线上用直线连接该两点得到函数曲线的割线,得到割线与直线y=的交点,结合第一轮中的一个点作为下一轮迭代的两个初值点即(x=x1-f(x1)(x1-x0)/(f(x1)-f(x0))(4) Aitken method 理论依据是,根据原来的序列构造出一个新的序列,新的序列比原来序列的收敛速度快,新的序列中的元素是p=p0-(p1-p0)/(p0-2*p1+p2).4 相关的数值结果(通过程序调试)(1) Fixed-point (2) Newton iteration (3)
7、 Secant iteration (4) Aitken method 5 数值计算结果的分析从运行结果可以看出 不动点迭代的收敛速度最慢,Newton 和Secant 的收敛速度差不多,从四种方法运行的结果可以看出该函数的零点时1.36523。6 所有程序的源代码:(1) Fixed-point # include# includeusing namespace std;int main() double x0,x,TOL=pow(10,-4); int i=0,N; coutx0; coutendl; coutN; coutendl; while(i=N)/不动点迭代函数 x=sqrt(1
8、0-pow(x0,3)/2; /误差判断 if(fabs(x-x0)=TOL) /输出结果 coutxi= xendl; i+;/更换初始值 x0=x; return 0;(2) Newton # include# includeusing namespace std;int main() double x0,x,TOL=pow(10,-6); int i=1,N; coutx0; coutendl; coutN; coutendl; while(i=N) /Newton 迭代公式 x=x0-(-pow(x0,3)-4*pow(x0,2)+10)/(-3*pow(x0,2)-8*x0); /误
9、差判断 if(fabs(x-x0)=TOL) /输出结果 coutxi= xendl; i+; /更换初始值 x0=x; return 0;(3) Secant # include# includeusing namespace std;int main() double x0=0, x1=0, x=0,TOL=pow(10,-4),fx0,fx1,fx; int i=2,N; coutx0; coutx1; coutN; while(i=N) /计算初值点出的函数值 fx1=-pow(x1,3)-4*pow(x1,2)+10; fx0=-pow(x0,3)-4*pow(x0,2)+10; f
10、x=-pow(x,3)-4*pow(x,2)+10; /割线公式 x=x1-fx1*(x1-x0)/(fx1-fx0); /判断是否满足精度要求 if(fabs(x1-x)=TOL) coutxi= xendl; i+; /更换初始值 x0=x1; fx0=fx1; x1=x; fx1=fx; return 0;(4) Aitken method# include# includeusing namespace std;int main() double x0,x1,x2,x,TOL=pow(10,-4); int i=1,N; coutx0; coutN; while(i=N) /根据不动点
11、迭代公式计算两个初值点 x1=sqrt(10-pow(x0,3)/2; x2=sqrt(10-pow(x1,3)/2; /加速公式 x=x0-pow(x1-x0,2)/(x0-2*x1+x2); /判断是否满足精度要求 if(fabs(x-x2)=TOL) coutxi= xendl; i+; /更换初值 x0=x1; x1=x2; x2=x; return 0;数理系课程设计评分表课程名称: 项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩 教师签名: 日 期: 仅供个人用于学习、研究;不得用于商业用途。For personal use only in study and research; not for commercial use.Nur fr den persnlichen fr Studien, Forschung, zu kommerziellen Zwecken verwendet werden.Pour l tude et la recherche uniquement des fins personnelles; pas des fins commerciales. , , . 以下无正文
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1