- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
二分法求解单变量非线性方程及其应用与实现.doc
二分法求解单变量非线性方程及其应用与实现
论文 关键词:二分法单变量 非线性方程 收敛性误差
论文摘要:本文主要通过一个实例来研究单变量非线性方程f(x)=0的二分法求解及此方法的收敛性,根据误差估计确定二分次数并进行求解。同时实现matlab和C语言程序编写。从而掌握过程的基本形式和二分法的基本思想,在以后的学习过程中得以应用。
1.引言
在 科学 研究与工程技术中常会遇到求解非线性方程f(x)=0的问题。而方程f(x)是多项式或超越函数又分为代数方程或超越方程。对于不高于四次的代数方程已有求根公式,而高于四次的代数方程则无精确的求根公式,至于超越方程就更无法求其精确解了。因此,如何求得满足一定精度要求的方程的近似根也就成为了我们迫切需要解决的问题。近年来,随着数学科学研究的不断进展,又更新了许多方程求解的方法。我们知道,对于单变量非线性方程f(x)=0,一般都可采用迭代法求根,由此产生了二分法。
2.二分法
一般地,对于函数f(x),如果存在实数c,当x=c时f(c)=0,那么把x=c叫做函数f(x)的零点。
解方程即要求f(x)的所有零点。
先找到a、b,使f(a),f(b)异号,说明在区间(a,b)内一定有零点,然后求f[(a+b)/2],现在假设f(a)lt;0,f(b)gt;0,alt;b
①如果f[(a+b)/2]=0,该点就是零点,
如果f[(a+b)/2]lt;0,则在区间((a+b)/2,b)内有零点,(a+b)/2=gt;a,从①开始继续使用中点函数值判断。
如果f[(a+b)/2]gt;0,则在区间(a,(a+b)/2)内有零点,(a+b)/2=gt;b,从①开始继续使用中点函数值判断。
这样就可以不断接近零点。
通过每次把f(x)的零点所在小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,这种方法叫做二分法。
给定精确度ξ,用二分法求函数f(x)零点近似值的步骤如下:
1.确定区间[a,b],验证f(a)·f(b)lt;0,给定精确度ξ.
2.求区间(a,b)的中点c.
3. 计算 f(c).
(1)若f(c)=0,则c就是函数的零点;
(2)若f(a)·f(c)lt;0,则令b=c;
(3)若f(c)·f(b)lt;0,则令a=c.
4.判断是否达到精确度ξ:即若┃a-b┃lt;ξ,则得到零点近似值a(或b),否则重复2-4.
由于计算过程的具体运算复杂,但每一步的方式相同,所以可通过编写程序来运算。
3.实例引入
二分法求解单变量非线性方程的例子很多,仅以此例进行分析:
求方程f(x)=xsup3;-x-1=0在区间[1.0,1.5]内的一个实根,要求准确到小数点后第2位。
4.问题分析
对于以上单变量非线性方程,已知a=1.0,b=1.5,采用二分法求解。首先我们根据二分法所允许的误差范围求得应迭代次数。
二分法允许的误差公式:|x*-|(-)/2=(b-a)/0.005,
其中k为二分次数。
所以求得本题应二分6次达到预定的精度。
5.解题过程
这里a=1.0,b=1.5,而f(a)lt;0,f(b)gt;0。[a,b]的中点x0=1.25,将区间二等分。由于f(x0)lt;0,即f(x0)与f(a)同号,故所求根x*必在x0右侧,这是应令a1=1.25,b1=1.5,得到新的有根区间[a1,b1].如此反复二分6次,结果如下:
K/二分次数/区间
左边界值/右边界值F()的符号
0
1
2
3
4
5
61.0
1.25
1.3125
1.32031.5
1.375
1.3438
1.32811.25
1.375
1.3125
1.3438
1.3281
1.3203
1.3242-
+
-
+
+
-
-
6.基本二分法的matlab实现与C语言实现
6.1%二分法的算法及MATLAB实现
function[c,err,yc]=bisect(f,a,b,delta)
%f是所要求解的函数
%a和b分别是有根区间的左右限
%delta是允许的误差界
%c为所求的近似解
%yc为函数f在c上的值
%err是c的误差估计
ifnarginlt;4
delta=1e-5;
end
ya=feval(’f’,a);
yb=feval(’f’,b);
ifyb==0,c=b,return
end
ifya*ybgt;0
disp(’(a,b)不是有根区间’);
return
en
文档评论(0)