Вы находитесь на странице: 1из 2

BISECCION

function
[sol,x,err,iter]=biseccion(fun,a,b,t
ol,maxiter)
% Aplica biseccion a la funcion f en
el intervalo [a, b]
% Variables de entrada
% tol: precision deseada
% maxiter: tope de iteraciones
% sol: solucion aproximada
% x: vector de iteraciones
% err: distancia entre los dos
ultimos
% iter: número de iteraciones
sol=0; x=[]; err=b-a; sol=0;
iter=0;
fa=feval(fun,a); fb=feval(fun,b);
if fa*fb>0;
disp('La funcion debe tener
diferente signo en los extremos del
intervalo')
return
end
while err>tol & iter<maxiter
c=(a+b)/2; x=[x,c];
fc=feval(fun,c);
if fc==0; % casualidad de
que c sea la solución
a=c;b=c;
elseif fa*fc<0; % cambio de
signo en [a, c]
b=c; fb=fc;
else fb*fc<0; % cambio de
signo en [c, b]
a=c; fa=fc;
end
err=b-a;iter=iter+1; %
contador de iteraciones
end
sol=c; % solucion de salida
if err>tol;
disp('Insuficientes
iteraciones')
end