Teorema de Bolzano
Author: Ignacio Larrosa Cañestro (Grupo XeoDin)
Date: 3 Octubre 2013

Si f(x) es continua en [a, b] y alcanza valores de diferente signo en los extremos del intervalo, existe un c en (a, b) tal que f(c) = 0.
El método de bisección para la aproximación de raíces de una función continua consiste en localizar un intervalo [a, b] en cuyos extremos la función alcance valores de distinto signo. En virtud del teorema, entre ellos debe haber al menos una raíz. Se prefijar un valor epsilón para la precisión con que se desea conocer la raíz y se aplica el algoritmo:

1.  c:= (a + b)/2
2. Si f(c) = 0 o |b - a| < epsilón ==> c es el valor de la raíz o una aproximácón con error menor que epsilón/2, FIN
3. Si signo(f(c)) = signo(f(a)), entonces c:= a; en caso contrario, c:= b
4. Ir al paso 1.

En este applet, el algoritmo termina cuando el valor de f(c) es 'bastante' pequeño, de manera que el programa lo confunde con cero, pese a no serlo.

Pulsa el botón [Iteración] para realizar cada iteración.
La función se puede cambiar en la correspondiente caja de entrada de la ventana inferior. Si la función introducida no es continua en el intervalo [a, b], podrán producirse resultados extraños.
Si cambias manualmente los valores de a o b, se reinicia el contador de iteraciones.
Utiliza los botones [Zoom +] y [Zoom -] para ampliar  o reducir la escala y centrar el punto (c, 0). Para recuperar la vista estándar, hay que hacer clic en el panel superior y pulsar [Ctrl] + [M].
Si no está visible el eje OY, aparecen las coordenadas de la esquina superior izquierda e inferior derecha.

f(x) =

Escribe la función:

¡f(x) debe tomar signos
contrarios en a y en b!

a

b

a =

b =

Iterar

c

signo(f(c)) = signo(f(a))  ⇒  a:= c

signo(f(c)) = signo(f(b))  ⇒  b:= c

signo(f(a))=signo(f(b))

Modifica al menos uno de los valores

Los signos de f(a) y f(b) deben ser diferentes

signo(f(a))≠signo(f(b))

Mejorar la aproximación

Reiniciar

Introduce los extremos a y b del intervalo

Atención: f(x) debe ser continua en [a; b]

f(x) = (2 * x) - (3 * cos(x)^(2))
campoDeTexto1 = Textfield(f)
a:0
b:4
c = 2
A: (a, 0)
B: (b, 0)
campoDeTexto2 = Textfield(a)
campoDeTexto3 = Textfield(b)
fa: f(a)
fb: f(b)
fc: f(c)
C: (c, 0)
e = Segment(A, (a, f(a)))
g = Segment(C, (c, f(c)))
d: abs(b - a)
h = Segment(B, (b, f(b)))
texto4: "f(a) = " + (f(a)) + ""
texto6: "f(c) = " + (f(c)) + ""
texto5: "f(b) =" + (f(b)) + ""
i = Segment(A, B)
texto7: "|b - a| = " + d + ""
texto11: "f(x) = " + (LaTeX[f]) + ""
n:1
texto3: "c =\frac{a+b}{2}= " + (LaTeX[c]) + ""
j:false
texto18: " f(x) tiene una raíz en el intervalo (" + a + "," + b + ") "
texto12: " f(x) tiene una raíz en el intervalo [" + a + "," + b + "] "
cuenta:0
texto19: "c=\frac{a+b}{2}=" + (LaTeX[c]) + ""
texto20: "f(" + c + ")=" + (f(c)) + ""
texto13: "    Una raíz es c = " + (LaTeX[c]) + "   "
texto21: "    Una raíz es a = " + a + "    "
texto22: "    Una raíz es b = " + b + "    "
texto24: "" + (LaTeX[f]) + "=0"
texto25: "\frac{\left| b-a \right| }{2}=" + (LaTeX[(b - a) / 2]) + ""