Está en la página 1de 10

ANEP-CFE

CENTRO REGIONAL DE PROFESORES SUROESTE

Teorema de Bolzano

Matemática II:

PROF. CESAR ROQUETA

Javier Diaz, Enzo Gonzalez, Matias Otte, Francisco Sagasti.

INFORMÁTICA - 18/10/2023
Índice

Problema presentado
Definición de función continua en x = a.
Definición de función continua en el intervalo [a,b]
Enunciado e interpretación de Bolzano
Enunciado del Teorema de Bolzano.
Ejemplos:
Que sucede en el caso de que f sea continua en el intervalo [a,b] y f(a) * f(b) > 0?
Otros casos:
Explicación del programa
Desafío extra
Problema presentado
Elaborar un programa informático que encuentre la raíz de la función polinómica de tercer
grado 13 x 3+ 6 x2 +6 x−7 en el intervalo [0 ,1] .

Definición de función continua en x=a .


Definición de función continua en x = a (la trabajada en el curso). Dar ejemplos de
funciones continuas y no

a un punto de acumulación del dominio de la función f


f es continua en x = a ↔ i) ∃ f(a), es decir, a ∈ Dominio de
f(x)
ii) ∃ lim f(x) entonces lim f(x) = lim f(x)
x → a x → a-

x → a+

iii) lim f(x) = f(a)


x → a

La función f es continua en x = a cuando se cumple que:


● a pertenece al dominio de la función f y existe la función para a.
● el límite por derecha e izquierda para f(x), para x tendiendo a a, tiende a a.
● el límite de f(x), cuando x tiende a a es igual a f(a).

Función continua.

Casos de funciones que no cumplen con las 3 condiciones. (Discontinuas)


Definición de función continua en el intervalo [a , b]

● Si a es un punto de acumulacion del dominio de f

b = (3; 4) ∪ {5}

● f es continua en (a, b) ↔ f es continua en x; ∀x ∈ (a, b)


● f es continua en [a, b] ↔ i) f es continua en (a, b)
ii) f es continua en a+
iii) f es continua en b-

Enunciado e interpretación de Bolzano

Enunciado del Teorema de Bolzano.


Sea f(x) una función continua en el intervalo cerrado [a, b] tal que f(a)·f(b)<0, el
teorema de Bolzano nos permite afirmar que existe al menos un punto c∈(a, b) tal que
f(c)=0.

Ejemplos:

Supongamos que tienes la función F(x) = x³ + x − 1=0. Esta


función, al ser polinómica, es continua y como resultado presenta
un intervalo cerrado en [0,1].

Procedemos a comprobar si cumple los requerimientos para aplicar este teorema:


● Punto A: f(0) = -1 < 0
● Punto B: f(1) = 1 > 0

Con estos valores obtenidos, podemos afirmar, mediante bolzano, que allí se
encuentra un punto c, tal que f(c) = 0

Que sucede en el caso de que f sea continua en el intervalo [a,b] y f(a) *


f(b) > 0?
El teorema de Bolzano se aplica cuando la función es continua en un intervalo cerrado [a,
b] y los valores de la función en los extremos tienen signos opuestos, es decir, f(a) * f(b) <
0. Si el signo de a(f(a)) y el signo de b(f(b)) son ambos positivos, entonces el teorema de
Bolzano no se puede aplicar, ya que no se cumple la condición de cambio de signo. Esto
significa que no se puede garantizar la existencia de una raíz o un cero de la función en el
2
intervalo [a, b]. Un ejemplo de esto sería el siguiente: f ( x)=x −1

Gráficamente se vería así:


Otros casos:

Las funciones en 1 y en 2 cumplen las premisas indicadas en el teorema de


Bolzano, se puede observar que la función en 1 corta al eje un sólo punto, en x=c,
mientras que la función en 2 lo hace en dos puntos, x=c y x=d. Finalmente, la
función en 3 no es continua, con lo que a pesar de tener signos distintos en los
extremos del intervalo, no tiene por qué haber ningún c que corte al eje X.
Explicación del programa
Para acceder al código entra al siguiente enlace: https://replit.com/@FranSagasti/Prueba-
Matematica
Aquí no solo podrás visualizar el código del problema presentado, sino que también podrás
probarlo. Es decir, ingresar tus propios coeficientes e intervalos para determinar si hay
raíces o no en el mismo.

Desafío extra
Con el grupo se quiso ir más allá de la consigna planteada y elaborar un programa más
completo, no solo se podrá determinar si la función en el intervalo dado tiene un raíz. El
programa permite ingresar coeficientes que se quieran (pudiendo así ingresar distintas
funciones polinómicas) y un intervalo a elección.
Si tenemos que f (a)∗f (b)< 0 el programa funciona correctamente y brinda
resultados precisos, sin embargo si este producto es mayor que cero, no se podrá hallar la
raíz dada la complejidad y posibilidades que esto conlleva (ausencia de raíces, la existencia
de una o dos).
Entendiendo la lógica del programa
Definimos cuatro variables: a,b,c,d. Aquí se almacenan los coeficientes de la función
polinómica. Mediante la función “input()” se le indica al sistema que el usuario ingresa un
dato mediante el teclado.

¿Qué significa “float”?


En algunos lenguajes de programación (como en Python, el cuál utilizamos), float hace
referencia al tipo de dato “número de punto flotante”, que en matemática es un número real.
#Pedimos coeficientes de la función (a,b,c,d): ax*x*x + b*x*x + c*x + d
print("Ingrese el coeficiente del factor de 3er grado: ")
a = float(input ())
print("Ingrese el coeficiente del factor de 2do grado: ")
b = float(input ())
print("Ingrese el coeficiente del factor de 1er grado: ")
c = float(input ())
print("Ingrese el término independiente: ")
d = float(input ())

De forma análoga se le pide al usuario que ingrese los extremos del intervalo, empezando
por el “izquierdo”, nos referimos al menor.
#Pedimos extremos reales del intervalo inicial.
print("Ingrese el valor izquierdo del intervalo donde se quiere hallar la
raiz:")
bordeA = float(input())
print("Ingrese el valor derecho del intervalo donde se quiere hallar la
raiz:")
bordeB = float(input())

Una vez que ingresamos los coeficientes, creamos nuestra función polinómica.
def funcion(x):
global a, b, c,d #Con esta línea tenemos acceso a las variables
previamente ingresadas.
return a*pow(x,3)+ b*pow(x,2) + c*x + d

Dependiendo de los valores de las variables “a,b,c” y “d” tendremos distintas funciones
polinómicas. Al llamar a función(número) se retorna la imagen del valor del dominio
“número”.

Ahora crearemos nuestro intervalo de números reales, en Python los intervalos se pueden
representar mediante listas, es un tipo de dato que almacena datos de otros tipos de forma
dinámica, es decir podemos agregar y quitar elementos. Pensemos en un ejemplo cotidiano,
una lista puede ser una estantería, donde guardamos libros, podemos agregar y quitarlos
cuando se desee. Para esto se utilizan ciertas operaciones.
#Creación del intervalo de reales
creador = bordeA
conjunto_reales = [creador] #creo intervalo, por ahora solo ingreso el primer
valor, el borde izquierdo del intervalo.

while(creador<bordeB+0.001):
#agrego valores a mi intervalo, aumentando en 0,01 por cada paso
conjunto_reales.append(creador)
creador = creador + 0.001

Lo que haremos será cargar (ingresar valores a la lista) mediante un método de suma.
Primero definimos una variable que va a ser el “punto de inicio”, que es el extremo de menor
valor del intervalo, llamado “creador”. Posteriormente, definimos la lista y la llamamos
conjunto_reales, y la iniciamos por ahora con un solo número, el creador.

Luego diremos algo como “mientras el creador sea menor al extremo del intervalo de mayor
valor, agregaremos ese número a mi conjunto, y aumentamos al creador con un paso de
0.001”. Si volvemos al caso base del problema, el menor valor del intervalo era 0, de esta
manera agregamos:
0, 0.001, 0.002,....... hasta llegar al 1.000 (al 1). Y ahora tendremos creado nuestro intervalo
0 a 1, pero recordemos, puede ser cualquier par a,b de números, que el usuario ingrese.

Aplicando el teorema de bolzano:

#Intervalo inicial.
medio_ejeX = (bordeA + bordeB)/2
imagen_medio_ejeX = funcion (medio_ejeX)

Crearemos un valor llamado medio_ejeX, el cual es el punto medio del intervalo A, B.


Luego llamando a la función, e ingresando como parámetro este punto obtenemos su
imagen.

¿Se cumple que f (a)∗f (b)< 0?


Lo primero que verificaremos será que el producto de los extremos del intervalo sea
negativo, para estar bajo las condiciones para aplicar el teorema de bolzano.

if funcion(bordeA)*funcion(bordeB) < 0:

Esto significa “Si el producto de las imágenes de los extremos es menor que cero” se hace
tal cosa. La instrucción if es un condicional, si se cumple esta condición, ocurre esto.

Es decir, si estoy bajo las condiciones de bolzano haremos los pasos para hallar el valor
aproximado de la raíz (divisiones sucesivas).
while imagen_medio_ejeX >0.00000001 or imagen_medio_ejeX <-0.00000001:
medio_ejeX = (bordeA + bordeB)/2
imagen_medio_ejeX = funcion (medio_ejeX)

Se toma el punto medio de mi intervalo (ya definido previamente), y se compara el valor de


la imagen con los valores del intervalo de extremos a y b. Dependiendo el signo, se toma
una “mitad” o la otra, de forma tal que el producto del nuevo intervalo sea negativo para
seguir bajo las condiciones del teorema.

Esto se hace en el bloque:


if(imagen_medio_ejeX < 0):
bordeA = medio_ejeX
else:
bordeB = medio_ejeX

Esta división sucesiva de intervalos se realiza hasta que la imagen del punto medio sea
muy cercana a 0. Esto se realiza mediante la instrucción
while imagen_medio_ejeX >0.00000001 or imagen_medio_ejeX <-0.00000001:

Posteriormente se muestra la raíz aproximada y su imagen mediante la función print:

print(f"La raiz aproximada es: {medio_ejeX} y su imagen es


{imagen_medio_ejeX}")

Si el producto de los extremos del intervalo es positivo, entonces se muestra un mensaje en


pantalla, de igual manera, usando print.
print("Disculpa, este programa no es capaz de determinar las raíces cuando
f(a)*f(b) no sea negativo.")

También podría gustarte