二分法及其matlab程序-经典.ppt
三.二分法及其MATLAB程序,1.用二分法求方程 f(x)=0的根 x*的近似值 xk 的步骤,步骤1.,若对于ab,有f(a)f(b)0,则在(a,b)内f(x)=0至少有一个根.,步骤2.,步骤3.,取a1=a,b1=x1;,运行后输出结果x*=x1.,1.用二分法求方程 f(x)=0的根 x*的近似值 xk 的步骤,步骤1.,若对于ab,有f(a)f(b)0,则在(a,b)内f(x)=0至少有一个根.,步骤2.,取a,b的中点,计算,步骤3.,若,则x1是f(x)=0的根,停止计算,若,则在(a,x1)内f(x)=0至少有一个根.,取a1=a,b1=x1;,若,则取a1=x1,b1=b;,步骤4.,若,退出计算,运行后输出结果x*=x1.,运行后输出结果,反之,返回步骤1,重复步骤1,2,3.,2.二分法的matlab主程序,求解方程f(x)=0在开区间(a,b)内的一个根的前提条件是f(x)在闭区间a,b上连续,且f(a)f(b)0.,输入的量:a和b是闭区间a,b的左右端点,abtol是预先给定的精度.,运行后输出的量:k是使用二分法的次数.x是方程在(a,b)内的实根x*的近似值,其精度是abtol.,wuca=|bk-ak|/2是使用k次二分法所得到的小区间的长度的一半,即实根x*的近似值x的绝对精度限,满足wucaabtol.yx=f(xk),即方程f(x)=0在实根x*的近似值x处的函数值.,2.二分法的matlab主程序,function k,x,wuca,yx=erfen(a,b,abtol)a(1)=a;b(1)=b;ya=fun(a(1);yb=fun(b(1);%程序中调用的fun.m 为函数 if ya*yb0,disp(注意:ya*yb0,请重新调整区间端点a和b.),returnendmax1=-1+ceil(log(b-a)-log(abtol)/log(2);,for k=1:max1+1a;ya=fun(a);b;yb=fun(b);x=(a+b)/2;yx=fun(x);wuca=abs(b-a)/2;k=k-1;k,a,b,x,wuca,ya,yb,yxif yx=0a=x;b=x;elseif yb*yx0b=x;yb=yx;elsea=x;ya=yx;endif b-a abtol,return,endendk=max1;x;wuca;yx=fun(x);,%ceil是上取整,例:确定方程x3-x+4=0的实根的分布情况,并用二分法求在开区间(-2,-1)内的实根的近似值,要求精度为0.001.,3.用二分法求解方程f(x)=0在(a,b)内的近似根的步骤,步骤1.,建立名为fun.m的M文件如:,步骤2.,步骤3.,在matlab工作窗口输入程序:,其中输入的量:区间端点的值a,b和精度是abtol都是具体给定的数值,然后按运行键.运行后输出计算次数k、使用k次二分法所得到的小区间ak,bk的中点的值x和它的函数值y(x)及wuca=|bk-ak|/2.,function y1=fun(x)y1=f(x);,将二分法的主程序保存名为erfen.m的M文件;,k,x,wuca,yx=erfen(a,b,abtol),练习:确定方程 3x2-ex=0 的实根的分布情况,并用二分法求在开区间(-1,0)内的实根的近似值,要求精度为0.0005.,