Comprende la idea
Antes de empezar: Funciones, continuidad, condicionales, ciclos y excepciones en Python.
Si f es continua en [a,b] y sus valores extremos tienen signos opuestos, existe al menos una raíz entre ellos. Bisección divide el intervalo a la mitad y conserva una mitad que mantiene el cambio de signo. No necesita que la función sea creciente, pero la continuidad es esencial.
Una implementación acotada
def bisecar(f, a, b, tol=1e-6, max_iter=100):
if not a < b or tol <= 0 or max_iter < 1:
raise ValueError("Intervalo o límites inválidos")
fa, fb = f(a), f(b)
if fa == 0:
return a
if fb == 0:
return b
if (fa > 0) == (fb > 0):
raise ValueError("Falta cambio de signo")
for _ in range(max_iter):
m = a + (b - a) / 2
fm = f(m)
if fm == 0 or (b - a) / 2 <= tol:
return m
if (fa > 0) != (fm > 0):
b = m
else:
a, fa = m, fm
raise RuntimeError("No se alcanzó la tolerancia")Suponemos entradas y evaluaciones finitas, una función continua, una escala numérica moderada, tolerancia positiva y max_iter entero positivo. El código no certifica esos supuestos ni es una biblioteca numérica general. El límite de iteraciones evita un ciclo indefinido.
Qué significa la tolerancia
Si queda una raíz dentro del intervalo, la distancia entre el punto medio y esa raíz es como máximo la mitad del ancho. Esta implementación usa esa cota sobre x. Un valor pequeño de |f(m)| es otra medida y no siempre equivale a pequeño error en x.
¿Puede haber raíz sin cambio de signo?
Sí: tiene raíz en 0 y es positiva a ambos lados. La condición garantiza una raíz con continuidad, pero no detecta todas las raíces posibles.
Vamos con un ejemplo
Para − 2 en [1,2], los extremos valen −1 y 2. El primer punto medio es 1.5 y f(1.5) = 0.25: conservamos [1,1.5]. Después y f(m) = −0.4375: conservamos [1.25,1.5]. Repetir aproxima . Con tol = 0.001, el resultado está a lo sumo a 0.001 de una raíz cuando se cumple la condición de parada por ancho.
Conecta y aplica
Prueba el algoritmo con una raíz exacta en un extremo, otra interior, un intervalo sin cambio de signo y un límite de iteraciones insuficiente. Esas pruebas revisan resultados y rechazos del contrato.
Un detalle que importa: Un cambio de signo en entre −1 y 1 no garantiza una raíz: falta continuidad y la función ni siquiera está definida en cero. Revisar solo los extremos no valida el modelo.
Ponlo a prueba
Si el intervalo final mide 0.02 y conserva una raíz, ¿cuál es la cota del error de su punto medio?
Elige una respuesta para ver la explicación.
¿Necesitas ayuda con este tema?
Trabájalo paso a paso con un profesor de EATRYL. Consulta disponibilidad y costo para reforzar Bisección: aproximar una raíz conservando un intervalo.
Consultar una clase sobre este tema