牛顿迭代、割线法、二分法算法实验报告.docx_第1页
牛顿迭代、割线法、二分法算法实验报告.docx_第2页
牛顿迭代、割线法、二分法算法实验报告.docx_第3页
牛顿迭代、割线法、二分法算法实验报告.docx_第4页
牛顿迭代、割线法、二分法算法实验报告.docx_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数值分析作业键入文档副标题20123789 黄佳诚2014/11/25摘要本文分别采用了“二分法”、“牛顿法”、 “割线法”、3种方法讨论如何求解方程“x3-9=0”,描述了每个算法的算法思想,给出了计算结果与迭代时间以及每一步迭代结果和解的精度,并且用多项式拟合了不同算法的时间复杂度函数进行收敛性和时间复杂度分析比较了的优劣。在最后报告给出了其他可供使用的求根方法例如,“简易牛顿算法”、Steffensenf迭代法并对它的思想和计算流程进行了简单的介绍。关键词:二分法 牛顿法 割线法 简易牛顿法 Steffensenf迭代法一、计算机配置操作系统:windows7旗舰版处理器:Intel(R) Core(TM) i5-3210M CPU2.50GHz 安装内存(RAM):4.00GB(2.91GB可用)系统类型:32位操作系统二、二分法计算实验 2.1 二分法算法思想和简要描述 若f是区间a,b上的连续函数,且f(a)f(b)0,根据连续函数闭区间零点定理,f在a,b内必有一零点。 利用这一思想:若f(a)f(b)0,则计算c=(a+b)/2,并检验f(a)f(c)0是否是真的,若是把c改为b重新开始;若不是真的,则f(c)f(b) erfen(f,2,3,50,0.001,0.001) n a b delta alpha 1.0000 2.0000 2.5000 0.5000 19.0000 2.0000 2.0000 2.2500 0.2500 7.6250 3.0000 2.0000 2.1250 0.1250 3.3906 4.0000 2.0625 2.1250 0.0625 1.5957 5.0000 2.0625 2.0938 0.0313 0.8220 6.0000 2.0781 2.0938 0.0156 0.4049 7.0000 2.0781 2.0859 0.0078 0.2040 8.0000 2.0781 2.0820 0.0039 0.1016 9.0000 2.0801 2.0820 0.0020 0.0507 10.0000 2.0801 2.0811 0.0010 0.0254 11.0000 2.0801 2.0806 0.0005 0.0127 12.0000 2.0801 2.0803 0.0002 0.0063 13.0000 2.0801 2.0802 0.0001 0.0032 14.0000 2.0801 2.0801 0.0001 0.0016elapsed time is 0.316426 seconds.三、牛顿法计算实验3.1 牛顿法算法思想和简要描述 我们有一个函数f,其零点由数值计算得出,设r是f的一个零点,x是r的一个近似。若f的二阶导数存在并且连续,则有泰勒定理,得0=f(r)=f(x+h)=f(x)+hf(x)+o(h2) 其中h=r-x。若h较小(即x在r附近),则有理由略去o(h2)项并且在余下方程中求h。即得到h=-f(x)/f(x)。故x-f(x)/f(x)是比x更好的一个近似。牛顿法从r的一个估计x0开始,得到更加准确的近似值xn。递推式定义为:xn+1=xn-f(xn)f(xn)3.2 MATLAB运行牛顿法程序 牛顿法求解f=x3-9的根 参数设置:x0设置为函数f零点的近似。 n设置为牛顿法for语句迭代次数。 alpha设置为最后结果f(x)的精度。 delta设置为最后结果x的精度。 (若alpha,delta都符合设置的计算精度时,结束迭代并得出计算结果,否则一直迭代到n次)设置初始值:设置参数x0分别为为3;迭代次数n为50次;alpha和delta都设置为0.001。列出计算结果: newton(f,50,3,0.001,0.001) n x f(x) delta alpha 1.0000 2.3333 3.7037 0.6667 3.7037 2.0000 2.1066 0.3483 0.2268 0.3483 3.0000 2.0804 0.0043 0.0262 0.0043Elapsed time is 0.166680 seconds.四、割线法计算实验4.1 割线法算法思想和简要描述割线法思路总体上与牛顿法一致,但是为了避免牛顿法中求函数导数所带来的困难,用差商来近似的代替导数得到了割线法近似值的递推式:xn+1=xn-xn-xn-1fxn-f(xn-1)因为xn+1的计算需要xn和xn-1,所以开始时需要两个初始点。4.2 MATLAB运行割线法程序 割线法求解f=x3-9的根 参数设置:a,b设置为函数f零点的两个近似值。 n设置为牛顿法for语句迭代次数。 alpha设置为最后结果f(x)的精度。 delta设置为最后结果x的精度。 (若alpha,delta都符合设置的计算精度时,结束迭代并得出计算结果,否则一直迭代到n次)设置初始值:设置参数a,b分别为为3,4;迭代次数n为50次;alpha和delta都设置为0.001。列出计算结果: gexian(f,3,4,50,0.001,0.001) n x0 delta alpha 1 3 1 37 2.0000 2.5135 0.4865 11.1202 3.0000 2.2125 0.3010 5.0486 4.0000 2.1034 0.1092 1.5254 5.0000 2.0815 0.0219 0.2874 6.0000 2.0801 0.0014 0.0181Elapsed time is 0.080747 seconds.五、收敛性和时间复杂度分析5.1 三种算法的收敛性分析从理论上来看,二分法每次估计的范围都是前一次迭代时(a,b)区间的1/2,所以要达到千分位的精度至少应该进行10次左右的迭代;而牛顿法的收敛速度是最快的;割线法把牛顿算法中的导函数用插商代替造成了一定的误差,故收敛速度稍慢于牛顿迭代。从实验结果来看,结果也与理论上的判断相符,在实验精度取0.001的情况下,二分法迭代次数最多,进行了14次迭代;牛顿迭代算法的次数最少,只进行了3次迭代就到达了0.001位的精度要求;割线迭代法相对于牛顿算法的迭代次数要稍多一点,进行了6次迭代。5.2 三种算法的时间复杂度分析我们用迭代次数n来反映算法的要解决问题的规模并作为自变量,用tic toc函数记录每次迭代所花费的时间,记录随着n的不断增大,各算法所耗费时间的变化趋势,得到如下函数图像:二分法的渐进时间复杂度函数图像牛顿法的渐进时间复杂度函数图像割线法的渐进时间复杂度的函数图像从三种算法的渐进时间复杂度函数图像容易看出,随着n的不断增大是图像大致呈线性变化,说明了每次迭代所进行的计算量都是大致相当的,可以认为是三种算法都是稳定的。图像也反映出二分法的计算时间明显大于另外两种算法,这是由于二分法每一个循环语句内都要进行求f(a),f(b),f(a)*f(b),(a+b)/2四次计算计算量大于其他两种算法;牛顿法相较于割线法虽然收敛速得更快

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论