¿Qué es el Método de Bisección?

El método de Bisección está basado en un concepto muy sencillo, que consiste en tomar un intervalo que encierre la raíz que deseamos calcular, luego subdivimos dicho intervalo por la mitad y tomamos el sub-intervalo que contiene la raíz, descartando la otra mitad que no la contiene. Repitiendo este proceso podemos obtener el valor de la raíz con la precisión que deseemos. Para ello, partimos de un intervalo [a,b] arbitrario, que contenga una única raíz real de la función. Es de hacer notar que este método no permite hallar raíces dobles, debido a que este tipo de raíces toca de manera tangencial el eje de las x, por otra parte este método, no es capaz de diferenciar entre una raíz y una singularidad.



Imagen 1: Representación gráfica del Método de Bisección



Explicación paso a paso:


Pseudocodigo:

    Proceso MetodoBiseccion
        Definir PRECISION, INTERVALOS como Entero
        PRECISION <- 6
        INTERVALOS <- 10
    
        Escribir "Calculo de las raices de una funcion aplicando el metodo de la biseccion"
    
        Definir a, b, tolerancia, xr como Real
    
        Escribir "Ingrese el intervalo inicial [a, b]"
        Escribir "a = "
        Leer a
    
        Escribir "b = "
        Leer b
    
        imprimePuntos(a, b)
    
        Escribir "Escoja el intervalo adecuado"
        Escribir "a = "
        Leer a
    
        Escribir "b = "
        Leer b
    
        Si (f(a) * f(b) > 0) Entonces
            Escribir "No se puede aplicar el metodo de la biseccion"
            Escribir "porque f(", a, ") y f(", b, ") tienen el mismo signo"
        Sino
            Escribir "Tolerancia = "
            Leer tolerancia
            Escribir "a\tb\tx\tf(a)\t\tf(b)\t\tf(x)"
    
            Hacer
                xr <- (a + b) / 2.0
                Escribir a, "\t", b, "\t", xr, "\t", f(a), "\t", f(b), "\t", f(xr)
    
                Si (Abs(f(xr)) <= tolerancia) Entonces
                    Escribir "Para una tolerancia ", tolerancia, " la raiz de f es ", xr
                    Detener
                Sino
                    Si (f(xr) * f(a) > 0) Entonces
                        a <- xr
                    Sino
                        b <- xr
                    Fin Si
                Fin Si
            Mientras (Verdadero)
        Fin Si
    FinProceso
    
    Funcion f(x: Real) -> Real
        Retornar Exp(-1 * x) - Cos(3 * x) - 0.5
    FinFuncion
    
    Proceso imprimePuntos(a: Real, b: Real)
        Definir puntos como Entero
        puntos <- INTERVALOS + 1
        Definir ancho como Real
        ancho <- (b - a) / INTERVALOS
    
        Escribir ""
        Escribir "x\tf(x)"
    
        Para i <- 0 Hasta puntos-1 Con Paso 1 Hacer
            Escribir a, "\t", f(a)
            a <- a + ancho
        FinPara
    FinProceso

Diagrama de Flujo




Calculadora









Iteración Xa Xr Xb Error aproximado