二分法及迭代法求解非线性方程根
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二分法及迭代法求解非线性方程根
班级:姓名:方学号:日期:
一、实验目的
1、熟悉二分法及迭代法求解非线性方程根的数值算法;
2、用matlab软件实现二分法及迭代法,掌握迭代法的收敛性和收敛速度问
题及其加速方法;
二、基本理论及背景
1、牛顿迭代法具有平方收敛的速度,所以在迭代过程中只要迭代几次就会得到很精确的解。这是牛顿迭代法比简单迭代法优越的地方,但是选定的初值要接近方程的解,否则有可能得不到收敛的结果,再者,牛顿迭代法计算量比较大。因每次迭代除计算函数值外还要计算微商值。
2、牛顿迭代理论推导:设r是f(x) = 0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,L的方程为y =
f(x0)+f'(x0)(x-x0),求出L与x轴交点的横坐标 x1 = x0-f(x0)/f'(x0),称x1为r的一次近似值。过点(x1,f(x1))做曲线y = f(x)的切线,并求该切线与x轴交点的横坐标 x2 = x1-f(x1)/f'(x1),称x2为r的二次近似值。重复以上过程,得r的近似值序列,其中x(n+1)=x(n)-
f(x(n))/f'(x(n)),称为r的n+1次近似值;
3、参考《二分法求非线性方程根》,实现二分算法,完成下面的题目:
求方程○1的根,精度至少达到10-6;
比较迭代下列迭代法求解○1中方程根的收敛性:
○2,;
用牛顿法设计迭代函数求解○1中方程的根(精度至少达到10-6),并与○2中收敛的迭代法比较收敛的速度。。
三、算法设计及实现
1、设计:方程○1function f=fun1(x)
f=exp(x)-x-3;;
○2function y=Exp2(x)
y=exp(x)-3;
function y=Exp3(x)
y=log(x+3);
牛顿迭代:
function df=Exp4(x)
df=exp(x)-1。
四、实验步骤
1、○1打开matlab软件,新建ErFen_Root.m文件,在窗口中编辑二分法数值积分函数程序代码,并保存在指定的文件夹下,在Current Directory窗口右边点击《Browse For Folder》按钮指向ErFen_Root.m文件;
○2在Command Window中编辑相应要计算的题目的数值函数及相应的题目的表达式。
2、输出结果和初步分析说明(见附件一)。
五、使用说明实验结果分析
1、在Command Window窗口中编辑要调用的函数名与指定的函数名字不同导致出现错误,通过改正与函数名相同即可;在调用函数时要用单引号引用。六、算法的改进和实验总结
在用二分法迭代求解的过程中,被调用的函数需要清楚的描述所要执行的问题的求解过程,在matlab函数调用时,执行函数一定要与函数同名。
七、源程序(见附件二)
附件一:
>> [val,n]=ErFen_Root('fun1',[0 3],1e-6)
0 1.5000 3.0000 -2.0000 -0.0183 14.0855
1.5000
2.2500
3.0000 -0.0183
4.2377 14.0855
1.5000 1.8750
2.2500 -0.0183 1.6458 4.2377
1.5000 1.6875 1.8750 -0.0183 0.7184 1.6458
1.5000 1.5938 1.6875 -0.0183 0.3284 0.7184
1.5000 1.5469 1.5938 -0.0183 0.1499 0.3284
1.5000 1.5234 1.5469 -0.0183 0.0645 0.1499
1.5000 1.5117 1.5234 -0.0183 0.0228 0.0645
1.5000 1.5059 1.5117 -0.0183 0.0022 0.0228
1.5000 1.5029 1.5059 -0.0183 -0.0081 0.0022
1.5029 1.5044 1.5059 -0.0081 -0.0030 0.0022
1.5044 1.5051 1.5059 -0.0030 -0.0004 0.0022
1.5051 1.5055 1.5059 -0.0004 0.0009 0.0022
1.5051 1.5053 1.5055 -0.0004 0.0002 0.0009
1.5051 1.5052 1.5053 -0.0004 -0.0001 0.0002
1.5052 1.5053 1.5053 -0.0001 0.0001 0.0002
1.5052 1.5052 1.5053 -0.0001 -0.0000 0.0001
1.5052 1.5053 1.5053 -0.0000 0.0000 0.0001
1.5052 1.5052 1.5053 -0.0000 0.0000 0.0000
1.5052 1.5052 1.5052 -0.0000 0.0000 0.0000
1.5052 1.5052 1.5052 -0.0000 0.0000 0.0000
1.5052 1.5052 1.5052 -0.0000 0.0000 0.0000
1.5052 1.5052 1.5052 -0.0000 0.0000 0.0000
1.5052 1.5052 1.5052 -0.0000 0.0000 0.0000