《计算方法与实习》二分法论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
玉林师范学院数学与信息科学学院《计算方法与实习》课程论文(2015—2016学年度第一学期)
姓名:黄
专业:信息与计算科学
班别:信计2013班
年级:2013级
学号:2013
日期: 2016年 1 月 3日
方程求根修改的二分法
摘要
代数方程的求根问题是一个古老的数学问题。在许多实际问题中常会遇到求解非线性方程的问题,而一般非线性方程都没有直接的求解公式,因此需要通过一些数值方法逼近方程的解。在求解方程近似根的方法中,最直观,最简单的方法就是二分法。设函数f(x)在[a,b]上连续,严格单调,且f(a)f(b)<0,则[a,b]为f(x)=0一个有根区间。传统的二分法思想是用对分区间的方法根据分点处函数f(x)值的符号逐步将有根区间缩小,使在足够小的区间内方程有且仅有1个根。
本文主要浅谈一下,对利用修改的二分法来求解一些方程近似解的过程。修改的
二分法不同于传统的二分法,每次取不同的分点,分点的取法为1
,
3
a
+则令
55
100
a=,那
么修改的二分法分点为155265
3300300
+=
,即
53
60。最后利用matlab程序检验该方法的正确
性和有效性,使其成为二分法求解方程近似根的一个有效的方法。关键词:修改的二分法非线性方程近似根 matlab程序
方程求根修改的二分法
1.引言
二分法,也称区间对分法,是求解非线性方程的一个比较古老的方法,在现实生活中有着广泛的应用。利用二分法求解非线性方程的近似根,不仅仅是当代大学生要学习的基础知识,而且,在工程和科学技术中许多问题常常归结为求解非线性方程的问题,例如,在控制系统的设计领域,人口增长率的研究等等。
传统的二分法求解非线性方程f(x)的近似解的步骤为:
(1)确定区间[a,b],验证f(a)f(b)<0,给定精度ε;
(2)求区间[a,b]的中点x1;
(3)计算f(x1);
①若f(x1)=0,则x1就是函数的零点;
②若f(a)f(x1)<0,则令b=x1(此时零点x0∈(a,x1));
③若f(x1)f(b)<0,则令a=x1(此时零点x0∈(x1,b));
(4)判断是否达到精确度ε,即若|a-b|<ε,则得到零点近似值a(或b),否则重复2~4。
利用平分区间及无限数值逼近[]1
的数学思想,是对解析性较好的函数避开其复杂
运算,近似地计算,有效的解题的一种行之有效的算法。但从另一个角度考虑逼近,会收到良好的效果,而修改的二分法区别于传统的二分法,就在于分点的选取,每次取不
同的分点,分点的取法为1
,
3
a
+则令
55
100
a=,那么修改的二分法分点为
155265
3300300
+=
,
即53
60。而修改的二分法求解近似根的步骤与传统的二分法求解步骤就区别在第二步,
将原来的第二步修改为求区间[a,b]的53
60,即求a+53*(b-a)/60,其余步骤不变。
修改的二分法在求解非线性方程的近似根方面有着广泛的应用,确定了隔根区间,那么该方法数值性能更稳,事先可以控制精度,再加上算法原理特别的简单,matlab程序容易理解和操作,所以有理由成为解非线性方程的首选。
2.算法理论
二分法的理论依据是“函数零点的存在性定理”[]2
:如果函数y=f(x)在区间[a,b]
上的图像是连续不断的一条曲线,并且有f(a)f(b)<0,那么,函数y=f(x)在区间[a,b]内有零点,即存在x0∈(a,b),使的f(x0)=0,这个x0也就是方程y=f(x)=0的根。
3.算法模型
取区间[a,b]长度的53/60,即点a+53*(b-a)/60,那么我们可以估计出绝
对误差限仅为区间长的53/60或是7/60。如果这个结果能满足精度[]3
要求,
我们就停止进一步的计算;如果不能,就求出f(x),取点x=a+53*(b-a)/60,结果只能是下面三种情况之一:
(1) f(a)f(x)<0,此时我们有x0∈[a,x];
(2) f(x)f(b)<0,此时我们有x0∈[x,b];
(3) f(x)=0,此时x即为问题的精确解。
在前两种情况下,我们可以用x分别替换原问题中的b或a,从而把求解的
区间减小了。这样我们又可以取新区间[a,b]的53/60点。经过N次迭代[]4
后,
剩下的区间长为(b-a) (53/60)^n。如此继续下去,在这一些相互包含的子区间
中构造收敛[]5
的数列{Xk}来逼近根 x0。
假设f(x)=0,在区间[a,b]中只有一个根,且满足f(a)f(b)<0,则利用改进的二分法构造求根过程为:
(1)建立名为fun.m的M文件,如:function y1=fun(x)
y1=f(x);
(2)将二分法的主程序保存名为gjerfen.m的M文件;
(3)在matlab工作窗口中输入程序:
>>[k,x,wuca,yx]=gjerfen(a,b,abtol)
其中输入的量:区间端点的值a,b和精度abtol都是具体给定的数值,然后按运行键,运行后输出计算次数k,使用k次改进的二分法所得到的小区间[ak,bk]的a+53*(b-a)/60点的值x和它的函数值yx及误差wuca。