实验六非线性方程求根报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验六非线性方程求根一、问题提出设方程3()310fxxx有三个实根**121.8793,0.34727,xx*31.53209x现采用下面六种不同计算格式,求f(x)=0的根*1x或*2x1、231xxx2、313xx3、331xx4、213xx5、13xx6、32131()31xxxxx二、要求1、编制一个程序进行运算,最后打印出每种迭代格式的敛散情况;2、用事后误差估计1kkxx来控制迭代次数,并且打印出迭代的次数;3、初始值的选取对迭代收敛有何影响;4、分析迭代收敛和发散的原因。三、目的和意义1、通过实验进一步了解方程求根的算法;2、认识选择计算格式的重要性;3、掌握迭代算法和精度控制;4、明确迭代收敛性与初值选取的关系。四、实验学时:2学时五、实验步骤:1.进入C或matlab开发环境;2.根据实验内容和要求编写程序;3.调试程序;4.运行程序;5.撰写报告,讨论分析实验结果.解:程序代码:#includeiostream#includecmath#includecstdlibusingnamespacestd;doublef(doublei)//外调函数f(x),每次更新新的函数{//以第一种迭代方式为例子doublek,m,sum;k=3*i+1;m=pow(i,2.0);sum=k/m;returnsum;}intmain(){doublex,x0;intN;//最大迭代次数intk;cout输入初解:;cinx0;cout输入最大迭代次数:;cinN;for(k=1;k=N;k++){x=f(x0);if(fabs(x-x0)0.0000001){cout迭代次数:kendl;cout输出得到的解:xendl;system(pause);return0;}elsex0=x;}cout已达到最大迭代次数:Nendl;cout输出得到的解:xendl;system(pause);return0;}实验结果:程序运行结果讨论和分析:对于第一种迭代格式,收敛区间[-8.2-0.4],在该收敛区间内迭代收敛于-1.53209,只能求得方程的一个根;对于第二种迭代格式,收敛区间[-1.51.8],在该收敛区间内迭代收敛于-0.34730,同样只能求得方程的一个根;对于第三种迭代格式,收敛区间[-0.3+∞),在该收敛区间内迭代收敛于1.87937,只能求得方程的一个根;由以上结果很容易发现,初值的选取对迭代敛散性有很大影响。以第一种迭代格式为例,当初值大于等于-0.3时,迭代格式发散;当初值小于等于-8.3时,迭代格式也发散;只有初值在-0.3和-8.3之间时,迭代格式才收敛于—1.53209。其他迭代格式也有这样的性质,即收敛于某个数值区间,超出这个区间迭代格式就是发散的,这就是所谓迭代格式的收敛性。对于不同迭代格式在不同区间具有不同的敛散性的原因,我认为可以从一下两方面理解:1、迭代法是一种逐次逼近法,其基本思想是将隐式方程归结为一组显式的计算公式,就是说,迭代过程实质上是个逐步显式化的过程。2、我们可以用几何图像来更好地理解迭代过程。由图可知,在某些区间选取的初始值随着迭代次数的增加会越来越逼近精确值,即收敛于精确值,而在另外一些区间选取的初始值随着迭代次数的增加却离精确值越来越远,即不会收敛于一个确定值。

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功