DEV Community

 AppInitDev
AppInitDev

Posted on

Método de bisección con Python: convergencia y condiciones que no debes omitir

Método de bisección con Python: convergencia y condiciones que no debes omitir

Un método numérico no es únicamente una fórmula. También necesita una condición de entrada, un criterio de parada y una forma de avisar cuando no puede ofrecer una solución fiable.

El problema y el alcance del ejemplo

La ficha de Numerical Methods: Cálculo resume su función así: «Resuelve raíces, interpolación y mínimos cuadrados con iteraciones paso a paso» Numerical Methods incluye búsqueda de raíces y visualización de iteraciones según su descripción pública. Vamos a reproducir bisección para una ecuación continua, con validación del intervalo y tolerancia explícita. Este ejemplo no es código de la app.

Cómo reproducir la idea

Necesitas Python 3. Guarda biseccion.py y ejecútalo sin dependencias externas.

def biseccion(f, a, b, tolerancia=1e-8, max_iter=100):
    fa, fb = f(a), f(b)
    if fa == 0:
        return a
    if fb == 0:
        return b
    if fa * fb > 0:
        raise ValueError('El intervalo no tiene cambio de signo')
    for paso in range(1, max_iter + 1):
        m = (a + b) / 2
        fm = f(m)
        print(f'{paso:02d}: x={m:.10f}, f(x)={fm:.3e}')
        if abs(fm) < tolerancia or (b - a) / 2 < tolerancia:
            return m
        if fa * fm < 0:
            b, fb = m, fm
        else:
            a, fa = m, fm
    raise RuntimeError('No convergió dentro del límite')

raiz = biseccion(lambda x: x**3 - x - 2, 1, 2)
print('Raíz aproximada:', raiz)
Enter fullscreen mode Exit fullscreen mode

Qué demuestra el código

Cada paso conserva un intervalo con cambio de signo. La implementación muestra los valores de la función y permite ver cómo el ancho del intervalo disminuye. Bisección es robusta bajo sus hipótesis, aunque puede converger más despacio que otros métodos.

Pruebas recomendadas

El resultado debe aproximarse a 1.52138. Cambia el intervalo por [3, 4] para observar el error de validación. Reduce max_iter a 2 y verifica que el algoritmo no finge haber encontrado una respuesta exacta.

Límites que conviene reconocer

El método exige continuidad en el intervalo y un cambio de signo apropiado; existen raíces sin cambio de signo que esta verificación no detecta. No incorpora análisis de error de redondeo ni métodos para funciones discontinuas.

Qué aprendemos

Un programa educativo debe hacer visibles las hipótesis y los criterios de parada. Una tabla de iteraciones puede enseñar más que un número final.

Contexto y enlaces del autor

El tema se relaciona con las funciones declaradas públicamente de Numerical Methods: Cálculo, una aplicación Android de AppInitDev. El código anterior es un ejemplo independiente: no se ha inspeccionado el repositorio privado ni se afirma que sea la implementación interna de la app. La referencia aparece al final para ofrecer contexto, no como requisito para completar el tutorial.

Image APPS

Referencia técnica

SciPy: root_scalar

Top comments (0)