二分法求方程的实根
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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编程的能力。