李建昊数值分析课设.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
李建昊数值分析课设

《数值分析》课程设计任务书 指导教师姓名 王恒友 教研室 信计 课程设计题目 求给定代数多项式的根 人数 1 学时 5天 设计目的、任务和要求 目的 要求学生利用所学过的数值分析方法求给定代数多项式的根。 (二)任务 1. 根据所掌握的数值分析算法,选择一至两个算法,独立编写程序,实现根的求解等; 2. 根据给定的代数多项式进行测试,调式程序; 3. 对所设计的程序解决实际问题并分析,撰写分析报告。 (三)要求 学生1个人组成一个小组,要求根据上述任务,通过查找资料,完成程序设计,并撰写分析报告,报告要体现工作过程、测试结果、分析等内容。 设计的方法和步骤 查阅资料,展开充分理论分析,在掌握算法原理后进行软件设计,完成下列任务: 熟悉此次设计的目标,查阅相关资料; 对算法理论进行剖析,论证算法实现的可行性; 根据可行的算法设计,进行软件程序实现,并最终解决实际问题。 设计工作计划 本案例时间为5天,具体安排如下 熟悉课设目标,查阅相关资料:1天 算法理论进行剖析,论证算法实现的可行性:1天 根据可行的算法设计,进行软件程序实现:2天 对所设计的程序解决实际问题并分析,撰写分析报告:1天 主要参考资料 《数值分析简明教程》 王能超 高等教育出版社 《数值分析课程设计》 陈越、童若锋 浙江大学出版社 教研室签字: 年 月 日 院签字: 年 月 日 目录 一、问题分析 - 3 - 二、方法原理 - 3 - 三、算法设计 - 5 - 四、案例分析 - 7 - 五、课设总结 - 8 - 六、附录 - 9 - 一、问题分析 1.1 对问题的分析 根据上文问题的提出可知,我们要对给定的任意多项式: 求解。然而若想要一次性求出所有解则需要考虑多个因素,比如我们需要考虑重根问题,多个根值问题,本次实验我要采用的方法是二分法和牛顿法,如果遇到重根二分法就不能求出重根。因此为了避免这种误差我们将采用二分法和牛顿法相结合的方式,用牛顿法弥补二分法的不足。先提前分析可能的根区间,分段求解的方式分别求出每个根。这样让每段所求的区间上只有一个根,将其可能区间值代入程序中,经过处理就能得此根的真实值。 二、方法原理 2.1二分法原理 2.1.1基本原理 (连续函数的介值定理) 设f(x)在[a,b]上连续,且f(a) f(b)0,则存在x*((a,b)使f(x*)=0。 2.1.2具体方法 给定有根区间 [a, b] ( f(a) · f(b) 0) 和 精度要求 ( 1. 令 x = (a+b)/2 2. 如果 b – a = 2(, 停止计算,输出 x ,否则执行第3步 3. 如果 f (a) f (x) 0 , 则令 b = x,否则令 a = x, 返回第1步 2.2牛顿迭代法 2.2.1 基本原理: 解非线性方程f(x)=0的牛顿法是把非线性方程线性化的一种近似方法。把f(x)在x0点附近展开成泰勒级数: 取其线性部分,作为非线性方程f(x)=0的近似方程,则有: 设fˊ(x0)≠0则其解为: 再把f(x)在x1附近展开成泰勒级数,也取其线性部分作f(x)=0的近似方程。若f(x1)≠0,则得: 这样,得到牛顿法的一个迭代序列: 以上是牛顿迭代算法的基本思想,现在的任务就是确定一个初始值。由其思想可知的值越接近所求根的值越好。 三、算法设计 牛顿法代码如下: float qiudao(double z){ int m=0; int u; int g; float t=0; q=(float *)malloc(sizeof(float)*(n+1)); for(g=0;gn;g++) q[g]=(n-g)*p[g]; for(g=0;gn-1;g++) { } for(g=0;gn-1;g++){ while(mn-1) { q[g]=q[g]*z; m++; } m--; } for(u=0;un;u++) t=q[u]+t; return (t); } 主函数 printf(请输入弦截法起始点:); scanf(%d,z); while(1){ t=qiudao(z); w=f(z,n); x1=w-z*t; x2=-1*x1/t; z=x2; x3=f(z,n); if(x3-0eps) break; } p

文档评论(0)

tmd2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档