“数值分析”课程设计报告范文.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课程设计报告 课程设计题目: 非线性方程求解 2011年 11月 27 日 题目: 用二分法,简单迭代法、牛顿迭代法以及弦截法求非线性方程 误差不超过10-4,输出迭代次数,初始值和根的近似值。 一、摘要 在matlab环境下运用熟悉的计算机编程语言结合二分法、简单迭代法、牛顿迭代法以及弦截法求解非线性方程,在运行完程序后,对运行结果做出了各方面的分析和比较。 最终得出二分法迭代次数最多,需14次,而简单迭代法、牛顿迭代法以及弦截法的迭代次数都较少,只需4—5次。由于方程有多个解,所以当赋的初始值不同或给定的区间不同时,根的近似值也会有所不同。 二、设计目的 用熟悉的计算机语言编程,上机完成用二分法、简单迭代法、牛顿迭代法以及弦截法求解非线性方程,掌握各种方法的理论依据及求解思路,了解各种迭代方法的异同。 三、理论基础 二分法: 二分法就是将方程根所在的区间平分为两个小区间,再判断根属于哪个小区间;把有根的小区间再平分为二,再判断根所在的更小的区间,对分;重复这一过程,最后求出所要的近似值。 简单迭代法: 简单迭代法是将方程化为一个等价的方程: 从而构成序列: 即给定一个初值,由(2)可算得,再将带入(2)的右端,又可得,…。我们{}为迭代序列,而称(1)式中的为迭代函数,(2)为迭代格式。如果连续,迭代序列{}收敛于,则就是方程(1)的解。事实上,又,亦即: 或 所以,如果迭代序列收敛,总能收敛于原方程的解。实际计算中,无穷过程不可能实现,只迭代到一定程度,取作为原方程的近似根。 牛顿迭代法: 设已知方程的一个近似根,把在处做泰勒展开, 若取前两项来近似代替(称为的线性化),则得近似的线性方程: 设,解之得。取作为原方程的近似根,即,一般地,再重复用上述方法得:。一般地,有迭代公式 上式称为求解的牛顿迭代公式。 弦截法: 假设方程在区间[a,b]上有唯一根,在区间[a,b]内的曲线上任取两点作弦,用此弦与轴的交点横坐标作为方程根的近似值。按此方法进行迭代计算,直到满足精度要求为止。 单点弦法:为避免导数的计算,用平均变化率 来替代迭代公式中的导数,于是得到: 按此公式进行迭代计算就称单点弦截法。按(3)式求得的实际上是弦AB与轴交点的横坐标,下一步再以点()和()作弦交轴得等等。每次作新的弦都以()作为一个端点,只有一个端点不断更换,故名为单点弦截法。 四、程序代码及运算结果 function y=f(x) y=sin(x)-x.^2/2; 二分法: clear;clc; a=-2;b=1; chushizhi1=-2 chushizhi2=1 kg=10^(-4); for k=0:20 if f(a)*f(b)0 x=error else if f(a)*f(b)==0 if f(a)==0 a,k; else b,k; end else m=(a+b)/2; if abs(a-b)kg jinsijie=m diedaicishu=k-1 break else if f(a)*f(m)0 a=m; else b=m; end k=k+1; end end end end 运行结果 chushizhi1 =-2 chushizhi2 =1 jinsijie =1.5259e-005 diedaicishu =14 简单迭代法: x(1)=1 for k=1:12 x(k+1)=asin((x(k).^2)/2); if (abs(x(k+1)-x(k)))0.0001 x(k+1) k break end end 运行结果 jinsijie =9.9887e-010 diedaicishu =5 chushizhi =1 牛顿迭代法: syms x y=diff(sin(x)-x.^2/2,x) y = cos(x)-x function y=p(x) y=cos(x)-x; x(1)=-1; for k=1:20 if p(x(k))~=0 x(k+1)=x(k)-f(x(k))./p(x(k));

文档评论(0)

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

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

1亿VIP精品文档

相关文档