Método de bisección: qué es, algoritmo y ejemplo
¿Qué es el método de bisección?
El método de bisección es una de las soluciones numéricas básicas para hallar la raíz de una ecuación polinómica. Encierra entre paréntesis el intervalo en el que se encuentra la raíz de la ecuación y lo subdivide en mitades en cada iteración hasta encontrar la raíz. Por ello, el método de bisección también se denomina método de entre paréntesis.
Sin embargo, como el mecanismo de trabajo es similar al algoritmo de búsqueda binaria, el método de bisección también se conoce como método de búsqueda binaria, método de reducción a la mitad o método de dicotomía. Se basa principalmente en el teorema del valor intermedio.
Encontrar raíces de ecuaciones
En este ejemplo, solo consideramos ecuaciones con una variable independiente. Puede ser lineal o no lineal. Las ecuaciones lineales se utilizan para representar la gráfica de una línea recta, mientras que las ecuaciones no lineales se utilizan para representar curvas.
La raíz de una ecuación significa el valor de la variable independiente que satisface la ecuación. Por ejemplo: la raíz de una ecuación f(x)= 4-x2 = 0 es 2 porque f(2) = 4-22 = 0.
Consideremos f(x) como una función continua real. Según el teorema del valor intermedio, la ecuación f(x)=0 tiene al menos una raíz entre a y b si f(a)f(b) < 0. La función f(x) tiene una raíz, "c", entre A y B.
Representación gráfica del método de bisección
El siguiente gráfico representa el mecanismo de funcionamiento del método de bisección. En el gráfico podemos ver que la raíz de la ecuación está marcada en rojo.
Para empezar:
- Primero hicimos dos conjeturas iniciales, una1 y B1, para lo cual f(a1)pensión completa1) < 0. Según el teorema del valor intermedio, la raíz debe estar en [a1, b1].
- Podemos encontrar el punto medio de un1 y B1, cual es b2. Por lo tanto, el intervalo inicial ahora se reduce a [a1, b2] porque f(a1)pensión completa2) <0.
- De la misma manera se reduce el intervalo hasta encontrar la solución aproximada.
Algoritmo del método de bisección
Los pasos para aplicar el algoritmo del método de bisección para encontrar la raíz de la ecuación f(x)=0 son los siguientes
Paso 1) Elija las conjeturas iniciales a, b y la tasa de tolerancia e.
Paso 2) Si f(a)f(b) >=0, entonces la raíz no se encuentra en este intervalo. Por tanto, no habrá solución.
Paso 3) Encuentra el punto medio, c = (a+b)/2
(i) Si el valor de la función del punto medio f(c) = 0, entonces c es la raíz. Vaya al paso 5.
(ii) Si f(a)f(c) < 0, la raíz se encuentra entre a y c. Luego establezca a = a, b = c.
(iii) De lo contrario, establezca a = c, b = b.
Paso 4) Si el error absoluto es mayor que la tasa de tolerancia o (b-a) > e, vaya al paso 3.
Paso 5) Muestre c como la raíz aproximada.
Veamos un ejemplo del algoritmo del método de bisección.
Tenemos que encontrar la raíz de la siguiente función continua usando la fórmula del método de bisección.
f (x) = x3 - X2 + 2
Ejemplo del método de bisección
Paso 1) Asumamos,
a = -10,
b = 10, y
e = 1% o 0.01
Paso 2) Ahora comprobaremos si f(a)f(b) >= 0 o no.
f(a) = f(-10) = (-10)3 – (-10)2 + 2 = -1098
f(b) = f(10) = (10)3 – (10)2 + 2 = 902
f(a)f(b) = f(-10)f(10) = (-1098)(902) < 0
Por tanto, la raíz de la función anterior se encuentra en este intervalo [-10, 10].
Paso 3) Entonces se calculará primero el punto medio c.
Ahora es necesario comprobar las siguientes condiciones:
(i) si f(c) = 0:
f(c) = f(0) = (0)3 – (0)2 + 2 = 2 ≠ 0
(ii) si f(a)f(c) < 0:
f(c)f(a) = 2*(-1098) < 0
La condición se cumple. Para la próxima iteración, los valores serán,
una = una = -10
segundo = c = 0
Paso 4) Como (b-a) = (0-(-10)) = 10>0.05, se repetirá el proceso. Las siguientes iteraciones se muestran en la tabla.
Iteración | a | b | c | licenciado en Letras | f(c) |
---|---|---|---|---|---|
1 | -10 | 0 | 0 | 10 | 2 |
2 | -5 | 0 | -5 | 5 | -148 |
3 | -2.5 | 0 | -2.5 | 2.5 | -19.875 |
4 | -1.25 | 0 | -1.25 | 1.25 | -1.52562 |
5 | -1.25 | -0.625 | -0.625 | 0.625 | 1.36523 |
6 | -1.25 | -0.9375 | -0.9375 | 0.3125 | 0.297119 |
7 | -1.09375 | -0.9375 | -1.09375 | 0.15625 | -0.50473 |
8 | -1.01562 | -0.9375 | -1.01562 | 0.078125 | -0.0791054 |
9 | -1.01562 | -0.976562 | -0.976562 | 0.0390625 | 0.115003 |
10 | -1.01562 | -0.996094 | -0.996094 | 0.0195312 | 0.0194703 |
11 | -1.00586 | -0.996094 | -1.00586 | 0.00976562 | -0.0294344 |
Paso 5) En la undécima iteración, la condición del paso 11 será falsa. Por tanto, la raíz de esta ecuación es -4.
Diagrama lógico del método de bisección
Pseudocódigo
Start Set a, b, e if f(a)*f(b) >=0 Output("Root does not exist in this interval") Stop while (b-a)>e do c ← (a + b)/2 if f(c) = 0 break end if if f(c)*f(a) < 0 then b ← c else a ← c end while Output(c) Stop
Ejemplo del método de bisección en C/C++
Entrada:
#include<bits/stdc++.h> using namespace std; #define Error 0.01 double value(double x) { return x*x*x - x*x + 2; } void bisection_method(double a, double b) { if (value(a) * value(b) >= 0) { cout << "The root does not lie in this interval\n"; return; } double c = a; while ((b-a) >= Error) { c = (a+b)/2; if (value(c) == 0.0) break; else if (value(c)*value(a) < 0) b = c; else a = c; } cout << "The root is :" << c; } int main() { double a =-10 , b = 10; bisection_method(a, b); return 0; }
Salida:
The root is :-1.00586
Ejemplo del método de bisección en Python
Entrada:
def value(x): return x*x*x - x*x + 2 def bisection_method(a,b): if (value(a) * value(b) >= 0): return c = a while ((b-a) >= 0.01): c = (a+b)/2 if (value(c) == 0.0): break if (value(c)*value(a) < 0): b = c else: a = c print("The root is : ","%.4f"%c) a =-10 b = 10 bisection_method(a, b)
Salida:
The root is : -1.0059
Ventajas y limitaciones del método de bisección
Estos son los pros y los contras del método de bisección:
Ventajas | Contras |
---|---|
Método de búsqueda de raíces fácil y sencillo de implementar. | La convergencia es lenta porque se basa simplemente en reducir el intervalo a la mitad. |
Dado que encierra la raíz, siempre es convergente. | Si una de las suposiciones iniciales está cerca de la raíz, llegar a la raíz requerirá más iteraciones. |
La tasa de error se puede controlar aumentando o disminuyendo el número de iteraciones. |