Skip to main content

Biseccion C++ (codigo)


% f: funcion a la que se va a sacar el cero
% a, b: limites del intervalo
% delta: error absoluto maximo

f = @(x)(x*sin(x)-1);
a = 0;
b = 2;
delta = 0.00001;

% ya: valor de la funcion en a
% yb valor de la funcion en b
% yc: valor de la funcion en c
% err: error de la ultima iteracion
% maxi: maximo de iteraciones

 
ya = f(a);
yb = f(b);
if ya * yb > 0
  disp "No existe una raiz en el intervalo"
  break
end

maxi = 1 + round((log(b-a)-log(delta))/log(2));
for k = 1:maxi
  c = (a+b) / 2;
  yc = 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 < delta
    break
  end
end
c = (a+b) / 2;
err = abs(b-a);
yc = f(c);

% mostrar resultados
printf("La aproximación al cero es: %10.6f\n",c);
printf("Con un error absoluto menor a %8.6f\n",err);
printf("El valor de la funcion en la aproximacion es %10.8f\n",yc);
  

Comments