Algoritmo del método de bisección con ejemplos

Resumen inteligente

El método de bisección es una técnica numérica fiable que halla la raíz de una función continua dividiendo repetidamente por la mitad un intervalo donde la función cambia de signo. Es sencillo, garantiza la convergencia y se utiliza ampliamente en ingeniería, computación científica y cursos de análisis numérico para principiantes.

  • Idea principal: Divida repetidamente por la mitad un paréntesis [a, b] donde f(a) y f(b) tengan signos opuestos hasta que el intervalo se reduzca por debajo de una tolerancia.
  • 📐 Bases teóricas: Se basa directamente en el Teorema del Valor Intermedio, que garantiza la existencia de una raíz cuando la función cambia de signo en un intervalo continuo.
  • 🔁 Comportamiento de convergencia: Convergencia lineal con una reducción del error a la mitad en cada iteración, lo que proporciona mejoras de precisión predecibles pero relativamente lentas.
  • Fortalezas: Siempre converge para paréntesis válidos, solo requiere valores de función y es fácil de implementar en cualquier lenguaje de programación.
  • 🧪 Uso práctico: Útil para resolver ecuaciones no lineales en física, finanzas, búsqueda de hiperparámetros en aprendizaje automático y solucionadores numéricos basados ​​en inteligencia artificial.

¿Qué es el método de bisección?

El método de bisección es una de las técnicas numéricas fundamentales para hallar la raíz de un polinomio o ecuación trascendental. Consiste en delimitar el intervalo que contiene la raíz y subdividirlo en dos mitades en cada iteración hasta encontrarla dentro de un margen de tolerancia aceptable. Debido a este mecanismo de delimitación, el método de bisección también se conoce como método de acotación.

Dado que su mecanismo de funcionamiento se asemeja a la búsqueda binaria, el método de bisección también se conoce como método de búsqueda binaria, método de división por la mitad o método de dicotomía. Se basa en un sólido fundamento teórico: el teorema del valor intermedio, que garantiza que una función continua que cambia de signo en un intervalo debe cruzar por cero en algún punto dentro de dicho intervalo.

Una vez establecida la definición básica, exploremos por qué es importante encontrar las raíces de las ecuaciones y cómo encaja el método de bisección en ese panorama más amplio.

Encontrar raíces de ecuaciones

En este análisis, nos centraremos únicamente en ecuaciones con una variable independiente. Dichas ecuaciones pueden ser lineales o no lineales. Las ecuaciones lineales describen la gráfica de una línea recta, mientras que las ecuaciones no lineales describen curvas y figuras más complejas.

La raíz de una ecuación es el valor de la variable independiente que satisface la ecuación. Por ejemplo, la raíz de la 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 siempre que f(a)f(b) < 0. En otras palabras, la función f(x) tiene una raíz, “c”, en algún punto entre a y b.

Encontrar raíces de ecuaciones

Esta propiedad de cambio de signo es precisamente lo que aprovecha el método de bisección. La siguiente sección muestra cómo se ve esta idea gráficamente.

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 observar que la raíz real de la ecuación está marcada en rojo.

El procedimiento se puede resumir de la siguiente manera:

  • Primero elegimos dos conjeturas iniciales, una1 y B1, para el cual f(a1)pensión completa1) < 0. Según el Teorema del Valor Intermedio, la raíz debe estar en [a1, b1].
  • Luego calculamos el punto medio de un1 y B1, que es b2. El intervalo inicial ahora se reduce a [a1, b2] porque f(a1)pensión completa2) <0.
  • Del mismo modo, el intervalo se reduce a la mitad una y otra vez hasta encontrar una solución aproximada dentro de la tolerancia deseada.

Representación gráfica del método de bisección

Una vez clara la intuición geométrica, podemos formalizar el procedimiento como un algoritmo paso a paso.

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 estimaciones iniciales a, b y una tasa de tolerancia e.

Paso 2) Si f(a)f(b) >= 0, entonces la raíz no se encuentra en este intervalo. En ese caso, no hay solución dentro de [a, b].

Paso 3) Encuentra el punto medio, c = (a + b)/2.

(i) Si el valor de la función en el 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. Entonces, establezca a = a, b = c.
(iii) En caso contrario, establezca a = c, b = b.

Paso 4) Si el error absoluto es mayor que la tasa de tolerancia, es decir (b – a) > e, vuelva al paso 3.

Paso 5) Muestre c como la raíz aproximada.

Veamos un ejemplo del algoritmo del método de bisección en acción. Hallaremos la raíz de la siguiente función continua utilizando la fórmula del método de bisección.

f (x) = x3 - X2 + 2

Ejemplo del método de bisección

Paso 1) Supongamos que,

         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 lo tanto, la raíz de la función anterior se encuentra en el intervalo [-10, 10].

Paso 3) A continuación, se calcula el punto medio c.

Ejemplo del método de bisección

Ahora es necesario comprobar las siguientes condiciones:

(i) Si f(c) = 0:
         f(c) = f(0) = (0)3 - (0)2 + 2 = 2, que no es igual a 0.

(ii) Si f(a)f(c) < 0:
         f(c)f(a) = 2 * (-1098) < 0

La condición se cumple. Para la siguiente iteración, los valores serán:

         una = una = -10
         segundo = c = 0

Paso 4) Como (b – a) = (0 – (-10)) = 10 > 0.01, el proceso se repite. Las siguientes iteraciones se muestran en la tabla a continuación.

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 4 se vuelve falsa. Por lo tanto, la raíz aproximada de esta ecuación es -1.00586.

Una vez completado el ejemplo numérico, la siguiente sección presenta el diagrama lógico que representa el flujo de control completo.

Diagrama lógico del método de bisección

El diagrama de flujo que aparece a continuación resume la lógica de decisión del método de bisección, incluyendo la comprobación de los corchetes, la actualización del punto medio y la prueba de tolerancia.

Diagrama lógico del método de bisección

Seudo-Code

El pseudocódigo que aparece a continuación reproduce el algoritmo y sirve como modelo para implementar el método de bisección en cualquier lenguaje de programación.

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++

El siguiente C/C++ El programa implementa el método de bisección para encontrar la raíz de f(x) = x.3 - X2 + 2 dentro del intervalo [-10, 10].

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

El Python La versión que se muestra a continuación produce la misma raíz aproximada utilizando una lógica idéntica, lo que la hace ideal para la experimentación y la enseñanza rápidas.

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

Como toda técnica numérica, el método de bisección tiene claras ventajas y algunas desventajas prácticas. La siguiente tabla resume las ventajas y desventajas más importantes.

Ventajas Desventajas
Método sencillo y fácil de implementar para encontrar la raíz del problema en cualquier lenguaje de programación. La convergencia es lenta porque el método simplemente reduce a la mitad el intervalo en cada paso.
Siempre converge cuando se proporciona un corchete válido, ya que este encierra la raíz durante todo el proceso. Si una de las suposiciones iniciales ya está cerca de la raíz, alcanzarla aún requerirá muchas iteraciones.
La tasa de error se puede controlar directamente aumentando o disminuyendo el número de iteraciones o ajustando la tolerancia. No puede encontrar raíces complejas ni raíces múltiples de multiplicidad par, ya que la función no cambia de signo en dichas raíces.

Aplicaciones del método de bisección

El método de bisección se utiliza en muchos escenarios informáticos prácticos y modernos donde se requiere un paso robusto para la búsqueda de raíces.

  • Simulaciones de ingeniería: Resolución de ecuaciones no lineales que aparecen en la transferencia de calor, la dinámica de fluidos y el análisis estructural.
  • Modelamiento financiero: Cálculo de rendimientos, tasas internas de retorno y puntos de equilibrio cuando no existen soluciones analíticas.
  • Aprendizaje automático e IA: Localización de umbrales, calibración de modelos y ajuste de hiperparámetros en solucionadores numéricos basados ​​en inteligencia artificial.
  • Gráficos por computadora: Determinación de las intersecciones rayo-superficie y los valores de los parámetros a lo largo de las curvas.
  • Sistemas integrados: Raíces aproximadas en controladores de recursos limitados donde la simplicidad y la previsibilidad son más valiosas que la velocidad.

Preguntas Frecuentes

El método de bisección es una técnica numérica que encuentra una raíz de una función continua dividiendo repetidamente por la mitad un intervalo donde la función cambia de signo y seleccionando la mitad que aún contiene la raíz.

Siempre converge cuando la función es continua en [a, b] y f(a)f(b) es menor que cero, porque el Teorema del Valor Intermedio garantiza que existe una raíz en el intervalo, y la división por la mitad sigue reduciendo el corchete que la rodea.

El método de bisección converge linealmente. El error se reduce aproximadamente a la mitad en cada iteración, por lo que alcanzar una tolerancia e a partir de un intervalo de longitud L requiere aproximadamente log2(L/e) iteraciones, lo que resulta más lento que los métodos de Newton o de la secante.

El método falla cuando f(a) y f(b) tienen el mismo signo, cuando la función es discontinua en el intervalo o cuando la raíz tiene multiplicidad par, porque la función no cambia de signo a través de dicha raíz.

Los algoritmos de inteligencia artificial suelen combinar el método de bisección con modelos aprendidos. Una red neuronal sugiere un margen estrecho alrededor de una raíz probable, y el método de bisección garantiza una solución fiable y certificada dentro de ese margen.

Los modelos de IA destacan en el reconocimiento de patrones, pero no siempre pueden garantizar respuestas exactas. Los métodos numéricos clásicos, como la bisección, ofrecen convergencia demostrable y un error acotado, lo que los convierte en herramientas ideales como backends fiables dentro de los sistemas de IA para cálculos críticos de seguridad.

Resumir este post con: