牛顿迭代、割线法、二分法算法实验报告.docx

上传人:jian****018 文档编号:8082301 上传时间:2020-03-27 格式:DOCX 页数:6 大小:57.61KB
返回 下载 相关 举报
牛顿迭代、割线法、二分法算法实验报告.docx_第1页
第1页 / 共6页
牛顿迭代、割线法、二分法算法实验报告.docx_第2页
第2页 / 共6页
牛顿迭代、割线法、二分法算法实验报告.docx_第3页
第3页 / 共6页
点击查看更多>>
资源描述
数值分析作业键入文档副标题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四次计算计算量大于其他两种算法;牛顿法相较于割线法虽然收敛速得更快,但每次迭代都要重新计算f(x和f(x),相比于割线法每次只需计算一个f(x),计算量要稍大一些,所以每次迭代耗时更多。六、其他可供使用的算法6.1 简易牛顿法算法思想简述简易牛顿法即将中的换成一个常数,迭代公式为 6.2 Steffensenf迭代法算法思想简述假设我们要解方程,这个方法的迭代公式是, ,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!