El método de bisección, conocido también como de corte binario, de par- tición de intervalos o de Bolzano, es un tipo de busqueda incremental en el que el intervalo se divide siempre a la mitad. Si la función cambia de signo sobre el intervalo, se evalúa el valor de la función en el punto medio. La po- sición de la raíz se determina situándola en el punto medio del subintervalo, dentro del cual ocurre un cambio de signo. El proceso se repite hasta obtener una mejor aproximación. Para el método de bisección tenemos el siguiente código realizado en Octave y compatible con MatLab.
Entradas: f, a, b, Nmax, tol
fa = f(a)
if fa = 0
"a es raíz aproximada"
stop
end if
fb = f(b)
if fb = 0
"b es raiz aproximada"
stop
end if
if signo(fa) = signo (fb)
stop
end if
error = b-a
c = (a+b)/2
fc = f(c)
k = 1
while k <= Nmax and error > tol y fc != 0
aux = c
if signo(fc) != signo (fa)
b = c
fb = fc
else
a = c
fa = fc
end if
c = (a + b) / 2
fc = f(c)
error = |c-aux|
k = k + 1
end while
if fc = 0
"raiz aproximada x = c"
else if error <= tol
"raiz aproximada x=c con error = error"
else
"superado #maximo de iteraciones"
end
stop
Implementar el algoritmo anterior en la m-function bisect.m
de protótipo siguiente:
En esta implementación no se pasa f
como parámetro, sino que se la pide al usuario al principio de la función bisect
. Empezar la implementación como sigue:
function [c,fc,err] = bisect(a,b,delta,nmax)
f = input("ingrese f(x): ", "s");
f = inline(f);
err = 0;
ya = f(a);
yb = f(b);
...
end
Para pasar una función como parámetro referirse a: