using SymPy # Para el cálculo simbólico de límites.
using Plots # Para el dibujo de gráficas.
#plotlyjs() # Para obtener gráficos interactivos.
using MTH229 # Para restringir la gráfica de una función a su dominio.
using LaTeXStrings # Para usar código LaTeX en los gráficos.
4 Límites de funciones reales
4.1 Ejercicios Resueltos
Para la realización de esta práctica se requieren los siguientes paquetes:
Ejercicio 4.1 Sea la función
Estudiar la tendencia de
cuando se aproxima a por la derecha, evaluando la función en para .AyudaDefinir la función y aplicar la función a los valores de x indicados usando compresiones de arrays.
Soluciónf(x) = x^2 = 3 a print([f(a+1/(10i)) for i = 1:10])
[9.610000000000001, 9.302499999999998, 9.20111111111111, 9.150625, 9.1204, 9.100277777777777, 9.085918367346938, 9.075156250000001, 9.06679012345679, 9.060099999999998]
La función tiende a
.Estudiar la tendencia de
cuando se aproxima a por la izquierda, evaluando la función en para .Soluciónprint([f(a-1/(10i)) for i = 1:10])
[8.41, 8.7025, 8.801111111111112, 8.850625, 8.8804, 8.900277777777777, 8.914489795918367, 8.925156249999999, 8.933456790123458, 8.940100000000001]
La función también tiende a 9.
Dibujar la gráfica de los valores de
evaluados en los apartados anteriores diferenciando la tendencia por la izquierda de la tendencia por la derecha.AyudaDefinir un vector con los valores de
y otro con los valores correspondientes de y usar la funciónscatter
del paquetePlots
, pasándole los dos vectores.Soluciónusing Plots = [a+1/(10i) for i=1:10] xd scatter(xd, f.(xd), label="Aproximación por la derecha") Plots.= [a-1/(10i) for i=1:10] xi scatter!(xi, f.(xi), label="Aproximación por la izquierda", legend=:topleft) Plots.
Calcular el límite por la izquierda y por la derecha de
en .AyudaDeclarar la variable simbólica
x
con@syms
imponiento la restricciónreal=true
, definir la función y usar la funciónlimit
del paqueteSymPy
para calcular los límites laterales de la función. Para el límite por la izquierda indicar el parámetrodir="-"
y para el límite por la derechadir="+"
.Solución@syms x::real = limit(f(x), x=>3, dir="-") li println("Límite por la izquierda: ", li) = limit(f(x), x=>3, dir="+") ld println("Límite por la derecha: ", ld)
Límite por la izquierda: 9 Límite por la derecha: 9
Ejercicio 4.2 Sea la función
Estudiar la tendencia de
cuando se aproxima a por la derecha, evaluando la función en para .Solucióng(x) = (1+x)^(1/x) = 0 a print([g(a+1/10^i) for i = 1:10])
[2.5937424601000023, 2.7048138294215285, 2.7169239322355936, 2.7181459268249255, 2.718268237192297, 2.7182804690957534, 2.7182816941320818, 2.7182817983473577, 2.71828205201156, 2.7182820532347876]
La función tiende a
.Estudiar la tendencia de
cuando se aproxima a por la izquierda, evaluando la función en para .Soluciónprint([g(a-1/10^i) for i = 1:10])
[2.867971990792441, 2.7319990264290284, 2.719642216442853, 2.71841775501015, 2.718295419980405, 2.7182831876793716, 2.7182819629423656, 2.7182818557091664, 2.7182817529399266, 2.7182820535066154]
La función también tiende a e.
Calcular el límite por la izquierda y por la derecha de
en .Solución@syms x::real = limit(g(x), x=>0, dir="-") li println("Límite por la izquierda: ", li) = limit(g(x), x=>0, dir="+") ld println("Límite por la derecha: ", ld)
Límite por la izquierda: E Límite por la derecha: E
Ejercicio 4.3 Considérese la función
Dibujar su gráfica, y a la vista de misma conjeturar el resultado de los siguientes límites:
AyudaUtilizar la función
plot!
del paquetePlots
. Usar los parámetrosxlims=(a,b)
para restringir la región de dibujo al intervalo del eje , yylims=(c,d)
para restringir la región de dibujo al intervalo del eje .Soluciónusing Plots f(x) = (1+2/x)^(x/2) plot(f, xlims=(-10,10), ylims=(0,6)) Plots.
A la vista de la gráfica, se puede concluir que
no existe. no existe.
Calcular los límites anteriores. ¿Coinciden los resultados con los conjeturados?
Soluciónusing SymPy @syms x::real println("Límite por la izquieda en -2: ", limit(f(x), x=>-2, dir="-")) println("Límite por la derecha en -2: ", limit(f(x), x=>-2, dir="+")) println("Límite en -∞: ", limit(f(x), x=>-oo)) println("Límite en ∞: ", limit(f(x), x=>oo)) println("Límite en 2: ", limit(f(x), x=>2)) println("Límite en 0: ", limit(f(x), x=>0))
Límite por la izquieda en -2: oo Límite por la derecha en -2: -oo Límite en -∞: E Límite en ∞: E Límite en 2: 2 Límite en 0: 1
PrecauciónAunque Julia calcula el límite en
por la derecha y el límite en , a la vista de la gráfica, estos límites en realidad no existen, ya que la función no está definida en el intervalo de .
Ejercicio 4.4 Calcular los siguientes límites
- Solución
using SymPy @syms x::real limit(sin(1/x), x=>0)
Como no se obtiene un valor concreto, sino un rango de valores, el límite no existe.
- Solución
limit(x*sin(1/x), x=>0)
- Solución
limit(ℯ^(-x)*sin(x), x=>oo)
- Solución
@syms a::real limit((sin(x)-sin(a))/(x-a), x=>a)
Ejercicio 4.5 Calcular el valor de las siguientes funciones en los puntos dados y su límite. Corroborar los límites obtenidos gráficamente.
en .SoluciónLa función
no está definida en de manera que al evaluarla en obtenemos un valor indeterminado.f(x)=sin(x)/x f(0)
NaN
Ahora calculamos el límite de
en .using SymPy @syms x::real f(x)=sin(x)/x limit(f(x), x=>0)
Para corroborar el límite dibujamos la gráfica de
en un entorno de .using Plots plot(f)
en .SoluciónLa función
no está definida en de manera que al evaluarla en obtenemos un valor indeterminado.g(x)=cos(x)/(x-pi/2) g(pi/2)
Inf
Como se puede observar, se obtiene
en lugar de indeterminado. La razón está en la representación de los números reales mediante números con coma flotante, de manera que se redondea al número de coma flotante más próximo, y al aplicar el coseno se obtiene un número muy próximo a pero distinto de . En estos casos conviene trabajar con la constante en modo simbólico para evitar la conversión a número en coma flotante. Para ello se puede usar la constantePI
predefinida en el paqueteSymPy
.g(x)=cos(x)/(x-PI/2) g(PI/2)
Ahora calculamos el límite de
en .limit(g(x), x=>pi/2)
Para corroborar el límite dibujamos la gráfica de
en un entorno de .using Plots plot(g)
Como se puede apreciar gráficamente la tendencia de
en es y no el valor obtenido con el cálculo del límite. De nuevo el problema está en la aproximación de como un real en coma flotante.limit(g(x), x=>PI/2)
Ejercicio 4.6 Considérese la función
Dibujar la gráfica de
y determinar gráficamente si existen asíntotas.AyudaPara respetar las discontinuidades utilizar la función
rangeclamp()
del paqueteMTH229
.Soluciónusing Plots, MTH229, LaTeXStrings @syms x::real g1(x) = x/(x-2) g2(x) = x^2/(2x-6) g(x) = x<=0 ? g1(x) : g2(x) plot(rangeclamp(g), xlims=(-5,10), ylims=(-5,10), xticks=-5:10, label = L"g(x)", legend=:topleft)
A la vista de la gráfica, se observa que
tiene una asíntota vertical en , una asíntota horizontal en y parece que también hay una asíntota oblicua en .Calcular las asíntotas verticales de
y dibujarlas.SoluciónEstudiamos primero el dominio para ver dónde no está definida la función. Como tanto la rama negativa como la positiva son funciones racionales, hay que ver los puntos que anulan el denominador.
println("Puntos fuera del dominio de la rama negativa: ", solve(x-2)) println("Puntos fuera del dominio de la rama positiva: ", solve(2x-6))
Puntos fuera del dominio de la rama negativa: Sym{PyCall.PyObject}[2] Puntos fuera del dominio de la rama positiva: Sym{PyCall.PyObject}[3]
Así pues la rama negativa está definida en todos
y la rama positiva en . Es en este último punto donde puede tener asíntota vertical, así que estudiamos los límites laterales.println("Límte en 3 por la izquierda: ", limit(g(x), x=>3, dir="-")) println("Límte en 3 por la derecha: ", limit(g(x), x=>3, dir="+"))
Límte en 3 por la izquierda: -oo Límte en 3 por la derecha: oo
Por tanto,
tiene una asíntota vertical en .vline!([3], label = L"Asíntota vertical $x=3$")
Calcular las asíntotas horizontales de
.SoluciónEstudiamos los límites en el infinito.
println("Límite en -∞: ", limit(g1(x), x=>-oo)) println("Límite en ∞: ", limit(g2(x), x=>oo))
Límite en -∞: 1 Límite en ∞: oo
Por tanto,
tiene una asíntota horizontal en .hline!([1], label = L"Asíntota horizontal $y=1$")
Calcular las asíntotas oblicuas de
.SoluciónEstudiamos el límite en
de (en no puede haber asíntota oblicua al haber asíntota horizontal).limit(g2(x)/x, x=>oo)
Por tanto,
tiene una asíntota oblicua con pendiente en . Para obtener el término independiente de la asíntota calculamos el límite en de .limit(g2(x)-x/2, x=>oo)
Por tanto,
tiene una asíntota oblicua .plot!(3/2+x/2, label = L"Asíntota oblicua $y=\frac{3}{2}+\frac{1}{2}x$")
Ejercicio 4.7 Dada la función
¿Qué valor debe tomar
Calcular el límite en Eq()
del paquete SymPy
y después resolverla con la función solve()
.
@syms x::real a::real
h1(x) = (2x^2-2x)/(3x^2+x)
h2(x) = (tan(x)-a*x)/x
= limit(h1(x), x=>0, dir="-")
l1 = limit(h2(x), x=>0, dir="+")
l2 solve(Eq(l1,l2))
Ejercicio 4.8 Representar gráficamente y clasificar las discontinuidades de la función
Para estudiar las discontinuidades de una función tenemos que estudiar los puntos que no están en el dominio y los puntos donde cambia la definición de la función en el caso de una función definida a trozos.
using Plots, MTH229, LaTeXStrings
@syms x::real
f1(x) = (x+1)/(x^2-1)
f2(x) = 1/exp(1/(x^2-1))
plot(f1, -4, 0, ylim=(-2,8), legend=false)
plot!(rangeclamp(f2), 0, 4)
Para determinar el dominio de la rama negativa, al ser una función racional, tenemos que ver los puntos que anulan el denominador.
solve(x^2-1)
Así pues, la función no está definida en
println("Límite en -1 por la izquierda: ", limit(f1(x), x=> -1, dir="-"))
println("Límite en -1 por la derecha: ", limit(f1(x), x=> -1, dir="+"))
Límite en -1 por la izquierda: -1/2
Límite en -1 por la derecha: -1/2
Como el límite existe,
Del mismo modo la rama positiva no está definida en
println("Límite en 1 por la izquierda: ", limit(f2(x), x=>1, dir="-"))
println("Límite en 1 por la derecha: ", limit(f2(x), x=>1, dir="+"))
Límite en 1 por la izquierda: oo
Límite en 1 por la derecha: 0
Como los límites laterales son distintos,
Finalmente, estudiamos los límites laterales en
println("Límite en 1 por la izquierda: ", limit(f1(x), x=>0, dir="-"))
println("Límite en 1 por la derecha: ", limit(f2(x), x=>0, dir="+"))
Límite en 1 por la izquierda: -1
Límite en 1 por la derecha: E
Como los límites laterales son distintos,
Ejercicio 4.9 El teorema de Bolzano permite construir un algoritmo para encontrar raíces de una función continua en un intervalo
- Calcular el centro del intervalo
. - Si
, es una raíz y se termina la búsqueda. - En caso contrario, si
hacer , y si no, hacer . - Repetir la búsqueda.
Construir una función que implemente este algoritmo y utilizarlo para calcular una raíz de la función
function raices_biseccion(f, a, b, error=1e-10)
if f(a) == 0 return(a) end
if f(b) == 0 return(b) end
if f(a) * f(b) > 0 error("Las imágenes de los extremos del intervalo no tienen signo distinto.") end
= (a+b)/2
c while abs(b-a) > error
if f(c) == 0 return(c) end
if f(a) * f(c) < 0
= c
b else
= c
a end
= (a+b)/2
c end
cend
f(x)=x^5+3x^4-2x^3+6x-4
print(raices_biseccion(f, 0, 1))
0.6496996753558051
4.2 Ejercicios propuestos
Ejercicio 4.10 En 1683 Jacob Bernouilli estudió la evolución del interés compuesto cuando el periodo de actualización se hacía cada vez más pequeño.
Si disponemos de
Si la cuenta ofrece un interés del
¿Qué cantidad habrá en la cuenta al cabo de un año si la cuenta ofrece un interés del
¿Qué cantidad habrá en la cuenta al cabo de un año si la cuenta ofrece un interés del
¿Qué cantidad habrá en la cuenta al cabo de un año si la cuenta se actualiza de manera continua con un interés
Ejercicio 4.11 Calcular los siguientes límites.
. . .
Ejercicio 4.12 ¿Cuáles de las siguientes rectas son asíntotas de la función
Ejercicio 4.13 ¿Cuándo debería valer la función
Ejercicio 4.14 Dada la función
¿Qué valor debe tomar
Ejercicio 4.15 ¿Qué tipo de discontinuidad presenta la función
Ejercicio 4.16 Calcular de forma aproximada con el algoritmo de bisección una solución de la ecuación