El método de demostración que hemos utilizado en la prueba del teorema de Bolzano se conoce con el nombre de método de la bisección. La ventaja del método es que puede ser implementado en un ordenador para obtener los ceros de una función de forma aproximada, pero con precisión arbitraria.
La idea esencial es partir de un intervalo en el que la función cambie de signo una única vez y tomando el punto medio de dicho intervalo y uno de los extremos del intervalo anterior, adecuadamente elegido, generar un nuevo intervalo en el que también se produzca un cambio del signo de la función pero cuya longitud sea la mitad.
El siguiente código se ocupa realizar esa construcción a partir de una
lista del tipo datos:[f,a,b,error]
.
En sentido estricto, para esta etapa, el elemento error
no es necesario,
lo incluimos por comodidad para tareas que realizaremos más tarde.
Comprobemos el funcionamiento del comando, por ejemplo, en la resolución de la ecuación log(1+x)=cos(x). Para lo cual dibujamos la función adecuada.
Esto nos permite ver que existe un único cero para la función, que corresponde a la solución de la ecuación. Podemos fijar la lista con los datos iniciales, por ejemplo, mediante
Y aplicar una vez el proceso de construcción del intervalo siguiente.
En el nuevo intervalo, cuya longitud es la mitad, también se produce un cambio de signo en los extremos (verifíquelo en la gráfica) y puede ser utilizado como punto de partida en una nueva etapa. El proceso puede repetirse cuantas veces se desee, ejecutando el código que aparece a continuación. Ejecútelo unas diez veces para comprobar como van cambiando los resultados.
Maxima expresa los extremos de los intervalos como fracciones para evitar errores de redondeo, pero si lo desea puede ver expresado el intervalo en forma decimal, lo cual le permitirá percatarse de cuales son las primeras cifras decimales de la ecuación.
En lugar de repetir manualmente varias veces la construcción del intervalo siguiente podemos pedirle a Maxima que haga ese trabajo por nosotros, por ejemplo 20 veces.
Comprobemos que nos estamos acercando a la solución dibujando la gráfica en el último de los intervalos.
¿Cuál es el número adecuado de iteraciones? Eso depende de la precisión que deseemos en la solución y, obviamente, de la longitud del intervalo inicial. Y aunque no es difícil determinarlo podemos hacer que de eso se ocupe Maxima, para ello habíamos incluido en los datos el parámetro "error", que hasta ahora no ha sido utilizado.
Una variante de lo anterior, si nos basta con la solución aproximada y no necesitamos tener el detalle de los intervalos, aparece acontinuación.
El resultado que proporciona el algoritmo construido puede compararse
con el que se obtiene mediante el comando find_root
implementado en Maxima
Ejercicios
Calcule las soluciones aproximadas de la ecuación x-x^2-log(1+x)