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
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
| Iteración | Xa | Xr | Xb | Error aproximado |
|---|