二分法求方程的实根

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二分法求方程的实根

一:实验目的 通过编程实现二分法,并利用所编程序求函数

x e x y --=3在(0,1)的近似解,然后比较和计算器所求的结果,从理性和实践上认识两种计算方法。

二:基本原理

连续函数的零点定理

1、假定f(x)在区间(x ,y )上连续 , 先找到a 、b 属于区间(x ,y ),使f(a),f(b)异号,说

明在区间(a,b)内一定有零点,然后求f[(a+b)/2]。

2、假设f(a)<0,f(b)>0,a

①令a a =1,()1112

1,b a x b b +==,如果f(x)=0,该点就是零点。 如果0)()(1

[][]2211,,b a b a ⊃,且()11222

1a b a b -=-。对区间[]22,b a 重复上述做法多步有[][][][] n n b a b a b a b a ,,,,332211⊃⊃⊃且()a b a b n n n -=--1

21(式1)记*x 为0)(=x f 的根,我们有[]n n b a x ,*∈,即),3,2,1(* =≤≤n b x a n n 由(式1)及夹逼定理

有:*lim lim x b a n n n n ==∞→∞→,实际计算时,当ε<-)(n n a b 时,取)(2

1*n n b a x +≈作为所求根近似值。

三:实验步骤

1:建立如下函数文件f.m :

Function f=f(x)

f=x e x --3

2:通过如下框图编写二分法程序:erfen.m

开始

输入

f,a,b,delta

计算fa,fb,fa*fb

fa*fb>0

计算最多二分次数max1

计算c=(a+b)/2, fc

fc=0

fb*fc>0

b=c,a=a a=c,b=b

|a-b|<=0.0005结束是

是否

(3)、在Matlab 命令窗口键入:[c,err,yc]=bisect(‘f ’,0,1,0.005)

(4)、得出结果,并与计算器所得结果比较分析误差。

四:二分法源代码

function[c,err,yc]=erfen(f,a,b,delta)

ya=feval(f,a);

yb=feval(f,b);

if ya*yb>0,return,end

max1=1+round((log(b-a)-log(delta))/log(2));

for k=1:max1

c=(a+b)/2;

yc=feval(f,c);

if yc==0

a=c;

b=c;

elseif yb*yc>0

b=c;

yb=yc;

else a=c;

ya=yc;

end

if b-a

end

end

c=(a+b)/2;

err=abs(b-a);

yc=feval(f,c);

五:实验截图:

六:实验结果:

七:实验分析:

1、误差分析:由于通过Matlab编程时系统默认的精度为8位小数,所以在计算时会导致缺少数。

2、优劣分析:优点:当方程0

x

f在区间()1,0上有唯一实根时,二分法肯定是收敛,

(=

)

且程序相对简单,且易于估计误差的大小。

缺点:不能求方程具有偶重根和复根,不能求不连续的函数,且收敛速度慢。

八:实验小结与体会:

1、通过二分计算在电脑中的演示进一步了解了二分法的特点。

2、在运用MA TLAB的过程中,通过对for循环结构的运用,帮助我复习了上学期所学的MATLAB程序结构。让我对顺序、选择、循环三种程序结构有了更好的认识,进一步巩固运用MATLAB编程的能力。

相关文档
最新文档