收藏 分享(赏)

MATLAB计算方法迭代法牛顿法二分法实验报告要点.docx

上传人:HR专家 文档编号:12211765 上传时间:2021-11-10 格式:DOCX 页数:16 大小:129.25KB
下载 相关 举报
MATLAB计算方法迭代法牛顿法二分法实验报告要点.docx_第1页
第1页 / 共16页
MATLAB计算方法迭代法牛顿法二分法实验报告要点.docx_第2页
第2页 / 共16页
MATLAB计算方法迭代法牛顿法二分法实验报告要点.docx_第3页
第3页 / 共16页
MATLAB计算方法迭代法牛顿法二分法实验报告要点.docx_第4页
第4页 / 共16页
MATLAB计算方法迭代法牛顿法二分法实验报告要点.docx_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、姓名实验报告成绩评语:指导教师(签名)年月日说明:指导教师评分后,实验报告交院(系)办公室保存。实验一方程求根一、 实验目的用各种方法求任意实函数方程f (x) 0 在自变量区间 a ,b 上,或某一点附近的实根。并比较方法的优劣。二、 实验原理(1) 、二分法ba对方程 f ( x) 0 在a ,b 内求根。将所给区间二分,在分点x判2ba断是否 f ( x) 0x2 。否则,继续判断是否 f (a)f ( x)0 ,;若是,则有根若是,则令 bx , 否则令 a x 。否则令 a x 。重复此过程直至求出方程f (x) 0 在a,b中的近似根为止。(2)、迭代法将方程 f ( x)0 等价

2、变换为 x =( x )形式,并建立相应的迭代公式xk 1( x )。(3)、牛顿法若已知方程的一个近似根 x0 ,则函数在点 x0 附近可用一阶泰勒多项式 p1 ( x) f ( x0 ) f (x0 )( xx0 ) 来 近似 , 因此 方 程 f ( x)0 可 近 似表 示 为f ( x0 )f (x)f (x0 )( x x )0设f ( x )0, 则 x x0f ( x0 ) 。取 x 作为原方程新的近00f ( xk )似根 x1,然后将 x1作为 x0 代入上式。迭代公式为:xk 1x0 f ( xk ) 。三、实验设备 :MATLAB 7.0软件四、结果预测(1) x11

3、=0.09033(2) x5 =0.09052 (3) x2 =0,09052五、 实验内容(1)、在区间 0,1上用二分法求方程 ex10x 2 0 的近似根,要求误差不超过 0.5 10 3。f (xk )(2)、取初值 x0 0 ,用迭代公式 xk 1 x0 f (xk ) ,求方程 ex 10x 2 0 的近似根。要求误差不超过 0.5 10 3 。(3)、取初值 x0 0 ,用牛顿迭代法求方程 ex 10 x 2 0 的近似根。要求误差不超过 0.5 10 3 。六、实验步骤与实验程序(1)二分法第一步:在 MATLAB 7.0 软件,建立一个实现二分法的MATLAB函数文件 agu

4、i_bisect.m 如下:function x=agui_bisect(fname,a,b,e)%fname为函数名, a,b 为区间端点, e 为精度fa=feval(fname,a); %把 a 端点代入函数,求fafb=feval(fname,b); %把 b 端点代入函数,求fbif fa*fb0 error(两端函数值为同号);end%如果 fa*fb0 ,则输出两端函数值为同号k=0x=(a+b)/2while(b-a)(2*e) %循环条件的限制fx=feval(fname,x);%把 x 代入代入函数,求fxif fa*fxfun=inline(exp(x)+10*x-2)

5、x=agui_bisect(fun,0,1,0.5*10-3)第三步:得到计算结果,且计算结果为kx00.5000000000000010.2500000000000020.1250000000000030.0625000000000040.0937500000000050.0781250000000060.0859375000000070.0898437500000080.0917968750000090.09082031250000100.09033203125000110.09033203125000(2)迭代法第一步:第一步:在 MATLAB7.0 软件,建立一个实现迭代法的MATLA

6、B函数文件 agui_main.m 如下:function x=agui_main(fname,x0,e)%fname为函数名 dfname 的函数 fname 的导数, x0 为迭代初值%e为精度, N为最大迭代次数 ( 默认为 100)N=100;x=x0; % 把 x0 赋给 x,再算 x+2*e 赋给 x0x0=x+2*e;k=0;whileabs(x0-x)e&kfun=inline(exp(x)+10*x-2) x=agui_main(fun,0,1,0.5*10-3)第三步:得出计算结果,且计算结果为kx10.1000000000000020.0894829081924430.0

7、906391358595840.0905126166743750.09051261667437以下是结果的屏幕截图(3)牛顿迭代法第一步 :第一步:在MATLAB 7.0 软件,建立一个实现牛顿迭代法的MATLAB函数文件 =agui_newton.m 如下:function x=agui_newton(fname,dfname,x0,e)%fname为函数名 dfname 的函数 fname 的导数, x0 为迭代初值%e为精度, N为最大迭代次数 ( 默认为 100)N=100;x=x0; % 把 x0 赋给 x,再算 x+2*e 赋给 x0x0=x+2*e;k=0;whileabs(x0

8、-x)e&kfun=inline(exp(x)+10*x-2) dfun=inline(exp(x)+10) x=agui_newton(fun,dfun,0,0.5*10-3)第三步: 得出结果,且结果为kx10.0909090909090920.0905251085833930.09052510858339以下是结果的屏幕截图七、实验结果(1) x11 =0.09033(2) x5 =0.09052(3) x2 =0,09052八、实验分析与结论由上面的对二分法、迭代法、牛顿法三种方法的三次实验结果,我们可以得出这样的结论:二分法要循环k=11 次,迭代法要迭代k=5 次,牛顿法要迭代 k=2 次才能达到精度为0.5 10 3 的要求,而且方程 ex10x 2 0的精确解经计算,为 0.0905250,计算量从大到小依次是 :二分法 ,迭代法 ,牛顿法。由此可知,牛顿法和迭代法的精确度要优越于二分法。而这三种方法中,牛顿法不仅计算量少,而且精确度高。从而可知牛顿迭代法收敛速度明显加快。可是迭代法是局部收敛的,其收敛性与初值x0 有关。二分法收敛虽然是速度最慢,但也有自己的优势,可常用于求精度不高的近似根。迭代法是逐次逼近的方法, 原理简单 , 但存在收敛性和收敛速度的问题。对与不同的题目, 可以从三种方法的优缺点考虑用哪一种方法比较好。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 工作总结

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报