# Implementación del teorema de Bolzano

Seguiremos más o menos los pasos de la demostración vista en clase.
(En algoritmia esta técnica es conocida como búsqueda binaria)

Lo primero es escribir la función a evaluar:

f(x):= x-sqrt(2)$

Después asignar los valores del intervalo [a,b]:

a:-100$
b:100$

Ahora seguimos los siguientes pasos:

1: Buscamos el punto medio de a y b:

m:(a+b)/2;

2: Calculamos el valor de f(m):

aux:f(m);

3: Si aux es 0 lo hemos encontrado, si es menor que cero asignamos a a el valor de m
y si es mayor que cero se lo asignamos a b:

if(aux = 0) then sol:m else (if(aux < 0) then a:m else b:m)$ a; b;

Continuamos haciendo esto hasta que el valor de a sea mayor o igual al de b

Ahora lo expresaremos de una forma más "automática"

El problema de este algoritmo es que puede no llegar a encontrar la solución exacta,
por ejemplo, cuando la solución es un número irracional (en la demostración sería donde se usa el principio de encaje de Cantor).

Para "solventarlo", añadimos un valor epsilon que actuará de error próximo al 0.

epsilon:0.000001;

Y el algoritmo sería:

while(a<b) do (m:(a+b)/2, aux:f(m), if(abs(aux) < epsilon) then(sol:m, a:b+1) else( if(aux < 0) then a:m else b:m )) $ sol;

Donde sol es el valor para el cual f(sol) = 0 aproximadamente, expresado de otras formas:

ratsimp(sol); ratsimp(sol), numer;

Y ya hemos encontrado c tal que f(c) = 0.