You are on page 1of 1

funtion y=bisecion(g,a ,b,No,TOL)

f=inline(g);
% a,b: etremos del intervalo inicial
% TOL: tolerancia
% No: limite del numero de iteraciones
% Ya, Yb : valores de los extremos actuales
fprintf('\nM�TODO DE BISECCI�N PARA HALLAR LA RAIZ APROXIMADA DE UNAECUACI�N NO
LINEAL\n\n')
fprintf( 'No a c b f(a) f(c) f(b)\n');
Ya=feval(f, a); Yb=feval(f, b);
if(Ya*Yb>0)
fprintf('\n\n Detenido porque f(a)f(b)>0\n');
else
i=1;
while i<=No
c=(a+b)/2; Yc=feval(f,c);
fprintf('%8.0f %10.6f %10.6f %10.6f %10.6f %10.6f
%10.6f\n',i,a,c,b,Ya,Yc,Yb);
if((Yc==0)|(abs(b-a)/2<TOL))
fprintf('\n La iteraci�n ha terminado satisfactoriamente.\n');
fprintf('\n');break
end
i=i+1;
if (Ya*Yc<=0)
b=c;%a=a; Yb=Yc;
else
a=c; %b=b; Ya=Yc;
end
end
fprintf('La ra�z aproximada es:\n c=%12.6f\n',c);
end

You might also like