El método de Bisección de
Bolzano
Para este método debemos considerar una función
continua dentro de un intervalo [a,b]
tal que f(a) tenga diferente signo f(a)*f(b) <0.
El proceso de decisión para encontrar la raíz
consiste en dividir el intervalo [a, b]
a la mitad c = (a+b)/2 y luego
analizar las tres posibilidades que se pueden dar.
1.- Si f(a)
y f(c) tienen signos opuestos, entonces
hay un cero entre [a,c].
2.- Si f(c)
y f(b) tienen signos opuestos,
entonces, hay un cero en [a,b].
3.- Si f(c)
es igual a cero, entonces c es un cero.
La implementación en Matlab es:
function
z = biseccion(a, b)
while(b-a
> 0.0001)
c = (a+b)/2;
fprintf('%7.4f, %7.4f, %7.4f, %7.4f,
%7.4f, %7.4f\n', a, c, b, f(a), f(c), f(a));
if(f(c) == 0) break;
end;
if f(a)*f(c) < 0 b = c;
else a = c;
end;
end;
Ejemplo
Calcular los ceros de la función x-cos(x)
utilizando el algoritmo de bisección en el intervalo [0,1].
iter |
a |
c |
b |
f(a) |
f(
c) |
f(b) |
0 |
0.0000 |
0.5000 |
1.0000 |
-1.0000 |
-0.3776 |
-1.0000 |
1 |
0.5000 |
0.7500 |
1.0000 |
-0.3776 |
0.0183 |
-0.3776 |
2 |
0.5000 |
0.6250 |
0.7500 |
-0.3776 |
-0.1860 |
-0.3776 |
3 |
0.6250 |
0.6875 |
0.7500 |
-0.1860 |
-0.0853 |
-0.1860 |
4 |
0.6875 |
0.7188 |
0.7500 |
-0.0853 |
-0.0339 |
-0.0853 |
5 |
0.7188 |
0.7344 |
0.7500 |
-0.0339 |
-0.0079 |
-0.0339 |
6 |
0.7344 |
0.7422 |
0.7500 |
-0.0079 |
0.0052 |
-0.0079 |
7 |
0.7344 |
0.7383 |
0.7422 |
-0.0079 |
-0.0013 |
-0.0079 |
8 |
0.7383 |
0.7402 |
0.7422 |
-0.0013 |
0.0019 |
-0.0013 |
9 |
0.7383 |
0.7393 |
0.7402 |
-0.0013 |
0.0003 |
-0.0013 |
10 |
0.7383 |
0.7388 |
0.7393 |
-0.0013 |
-0.0005 |
-0.0013 |
11 |
0.7388 |
0.7390 |
0.7393 |
-0.0005 |
-0.0001 |
-0.0005 |
12 |
0.7390 |
0.7391 |
0.7393 |
-0.0001 |
0.0001 |
-0.0001 |
13 |
0.7390 |
0.7391 |
0.7391 |
-0.0001 |
0.0000 |
-0.0001 |