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 ImplicitPlots # Para dibujar curvas implícitas.
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.
using Latexify # Para convertir expresiones a código LaTeX.
5 Derivadas de funciones reales
5.1 Ejercicios Resueltos
Para la realización de esta práctica se requieren los siguientes paquetes:
Ejercicio 5.1 Galileo Galilei trató de estudiar el movimiento de un cuerpo en caída libre con un experimento en el que midió la distancia recorrida cada segundo por una bola que caía por un plano inclinado.
La siguiente tabla recoge sus mediciones.
Tiempo (s) | Distancia (cm) |
---|---|
0 | 0 |
1 | 1 |
2 | 4 |
3 | 9 |
4 | 16 |
5 | 25 |
Dibujar la gráfica que resulta de unir los puntos correspondientes a los pares de la tabla con segmentos. ¿Qué forma tiene la gráfica?
AyudaSoluciónusing Plots = [0, 1, 2, 3, 4, 5, 6] t = [0, 1, 4, 9, 16, 25, 36] d scatter(t, d, legend=false) Plots.= Plots.plot!(t, d, linecolor="blue", xlab="Tiempo (s)", ylab="Distancia recorrida (cm)") plt
using GLMakie = [0, 1, 2, 3, 4, 5, 6] t = [0, 1, 4, 9, 16, 25, 36] d = Figure() fig = Axis(fig[1,1], xlabel="Tiempo (s)", ylabel="Distancia recorrida (cm)") ax scatter!(ax, t, d) Makie.f(x) = x^2 lines!(ax, 0..6, f) Makie. fig
Se aprecia que una forma parabólica.
Calcular la velocidad media (tasa de variación media) desde los instantes
hasta el instante y dibujar la rectas secantes a la gráfica anterior en esos instantes. ¿Cómo es la tendencia de las velocidades medias?AyudaLa tasa de variación media de una función
en un intervalo viene dada por la fórmulay la recta secante a la función
en el intervalo tiene ecuaciónSolución# Función para el cálculo de la velocidad media en del instante i al instante j. tvm(i, j) = (d[j]-d[i])/(t[j]-t[i]) = 4 j # Cálculo de las velocidades medias. for i in 1:3 println("Velocidad media desde el instante $(t[i]) al instante $(t[j]): $(tvm(i, j)) cm/s") end # Función para calcular la ecuación de la recta secante en los instantes i y j. secante(x, i, j) = d[i] + tvm(i, j) * (x - t[i]) # Dibujo de las rectas secantes for i in 1:3 = Plots.plot!(x -> secante(x,i,j)) plt end plt
Velocidad media desde el instante 0 al instante 3: 3.0 cm/s Velocidad media desde el instante 1 al instante 3: 4.0 cm/s Velocidad media desde el instante 2 al instante 3: 5.0 cm/s
Las velocidades medias crecen a medida que pasa el tiempo.
Calcular la velocidad media desde el instante
hasta los instantes y dibujar la rectas secantes a la gráfica anterior en esos instantes. ¿Cómo es la tendencia de las velocidades medias? ¿Hacia dónde tiende la velocidad media cuando los aproximamos al instante con instantes menores y mayores?Solución= 4 i # Cálculo de las velocidades medias. for j in 7:-1:5 println("Velocidad media desde el instante $(t[i]) al instante $(t[j]): $(tvm(i, j)) cm/s") end # Dibujo de las rectas secantes. for j in 7:-1:5 = Plots.plot!(x -> secante(x,i,j)) plt end plt
Velocidad media desde el instante 3 al instante 6: 9.0 cm/s Velocidad media desde el instante 3 al instante 5: 8.0 cm/s Velocidad media desde el instante 3 al instante 4: 7.0 cm/s
Las velocidades medias decrecen a medida que el tiempo decrece.
Se puede deducir que las velocidades medias tienden a
cm/s cuando los instantes se aproximan a s.Calcular la variación en la distancia recorrida cada segundo que pasa. ¿Cómo evoluciona la velocidad de la bola?
Solución= [] v for i in 2:length(d) push!(v, d[i]-d[i-1]) println("Velocidad media desde el instante $(t[i-1]) al instante $(t[i]): $(v[i-1]) cm/s") end
Velocidad media desde el instante 0 al instante 1: 1 cm/s Velocidad media desde el instante 1 al instante 2: 3 cm/s Velocidad media desde el instante 2 al instante 3: 5 cm/s Velocidad media desde el instante 3 al instante 4: 7 cm/s Velocidad media desde el instante 4 al instante 5: 9 cm/s Velocidad media desde el instante 5 al instante 6: 11 cm/s
Calcular la variación en la velocidad cada segundo que pasa. ¿Cómo evoluciona la aceleración de la bola? ¿Qué conclusiones sacó Galileo sobre la aceleración de la bola?
Soluciónfor i in 2:length(v) println("Aceleración media desde el instante $(t[i-1]) al instante $(t[i]): $(v[i]-v[i-1]) cm/s") end
Aceleración media desde el instante 0 al instante 1: 2 cm/s Aceleración media desde el instante 1 al instante 2: 2 cm/s Aceleración media desde el instante 2 al instante 3: 2 cm/s Aceleración media desde el instante 3 al instante 4: 2 cm/s Aceleración media desde el instante 4 al instante 5: 2 cm/s
Se observa que la aceleración es la misma. Galileo concluyó que la aceleración de un cuerpo en caída libre era uniforme.
Ejercicio 5.2 Representar gráficamente la función
using Plots, SymPy, LaTeXStrings
@syms x::real
f(x) = abs(x-1)
display(Plots.plot(f(x), label=L"f(x)=|x-1|"))
println("Derivada por la izquierda: ", limit((f(x)-f(1))/(x-1), x=>1, dir="-"))
println("Derivada por la derecha: ", limit((f(x)-f(1))/(x-1), x=>1, dir="+"))
Derivada por la izquierda: -1
Derivada por la derecha: 1
Como la derivada por la izquierda y por la derecha no son iguales, la función no es derivable en
Ejercicio 5.3 Calcular las derivadas de las siguientes funciones hasta el orden 4 y deducir la expresión de la derivada de orden
- Ayuda
Usar la función
diff(f,n)
del paqueteSymPy
para calcular simbólicamente la derivada de gradon
de la funciónf
.Soluciónusing SymPy @syms x::real f(x) = log(x+1) println("Primera derivada: ", diff(f(x))) println("Segunda derivada: ", diff(f(x), x, 2)) println("Tercera derivada: ", diff(f(x), x, 3)) println("Cuarta derivada: ", diff(f(x), x, 4))
Primera derivada: 1/(x + 1) Segunda derivada: -1/(x + 1)^2 Tercera derivada: 2/(x + 1)^3 Cuarta derivada: -6/(x + 1)^4
La derivada de orden
es . - Solución
using SymPy @syms x::real a::real g(x) = a^x println("Primera derivada: ", diff(g(x), x)) println("Segunda derivada: ", diff(g(x), x, 2)) println("Tercera derivada: ", diff(g(x), x, 3)) println("Cuarta derivada: ", diff(g(x), x, 4))
Primera derivada: a^x*log(a) Segunda derivada: a^x*log(a)^2 Tercera derivada: a^x*log(a)^3 Cuarta derivada: a^x*log(a)^4
La derivada de orden
es . - Solución
using SymPy @syms x::real h(x) = sin(x)+cos(x) println("Primera derivada: ", diff(h(x))) println("Segunda derivada: ", diff(h(x), x, 2)) println("Tercera derivada: ", diff(h(x), x, 3)) println("Cuarta derivada: ", diff(h(x), x, 4))
Primera derivada: -sin(x) + cos(x) Segunda derivada: -(sin(x) + cos(x)) Tercera derivada: sin(x) - cos(x) Cuarta derivada: sin(x) + cos(x)
La derivada de orden
es
Ejercicio 5.4 Sea
Dibujar la gráfica de
y dibujar las rectas secantes a en los intervalos para . ¿Hacia dónde tienden las pendientes de las rectas secantes?Soluciónusing Plots, SymPy, LaTeXStrings, Latexify @syms x::real f(x) = sqrt(x) = Plots.plot(f, 0, 2, ylims=(0,2.5), linewidth = 3, label=L"f(x)=\sqrt{x}", legend=:topleft) plt secante(x, i, j) = f(i) + (f(j)-f(i))/(j-i) * (x - i) for i in 0:9 = secante(x, i/10, 1) sec = Plots.plot!(sec, label =L"y=" * latexify(sec)) plt end plt
Se deduce que las pendientes de las rectas secantes tienen a
.Dibujar la recta tangente a la gráfica de
en .AyudaLa ecuación de la recta tangente a la función
en el punto es .Usar la función
diff(f)
del paqueteSymPy
para calcular simbólicamente la derivada de la funciónf
.Solución= f(1) + diff(f(x))(1) * (x-1) tg plot!(tg, linewidth = 2, color = "red", label="Tangente " * L"y=" * latexify(tg)) Plots.
Ejercicio 5.5 Calcular y dibujar las rectas tangente y normal a la gráfica de la función
La ecuación de la recta tangente a una función
y la de la recta normal
using Plots, SymPy, LaTeXStrings, Latexify
@syms x::real
f(x) = log(sqrt(x+1))
plot(f, -1, 3, xlims=(-1,3), ylims=(-1,2), aspect_ratio=1, label=L"f(x)=\ln(\sqrt{x+1})", legend=:topright)
Plots.= f(1) + diff(f(x))(1) * (x-1)
tg plot!(tg, label="Tangente "*L"y="*latexify(tg))
Plots.= f(1) - 1/diff(f(x))(1) * (x-1)
nm plot!(nm, label="Normal "*L"y="*latexify(nm)) Plots.
Ejercicio 5.6 Sea la función
Dibujar la gráfica de
.Soluciónusing Plots, SymPy, LaTeXStrings, Latexify @syms x::real g(x) = (2x^3-3x) / (x^2+1) plot(g, -2, 2, label=L"g(x)=\frac{2x^3-3x}{x^2+1}", legend=:topleft) Plots.
Calcular la derivada de
y dibujar su gráfica en la misma gráfica que la de .Soluciónplot!(diff(g(x)), label=L"g'(x)="*latexify(simplify(diff(g(x))))) Plots.
Calcular los puntos críticos de
.AyudaLos puntos críticos de una función son los puntos donde se anula la derivada.
SoluciónN.(solve(diff(g(x))))
2-element Vector{Float64}: -0.5583347485961263 0.5583347485961263
Existen dos puntos críticos en
y aproximadamente.A la vista de los puntos críticos y de la gráfica de la función derivada, determinar los intervalos de crecimiento y los extremos relativos de la función.
AyudaUna función
derivable en el punto es creciente si y solo si y decrecientes si y solo si .SoluciónLa derivada es positiva en los intervalos
y , por lo que la función es creciente en estos intervalos, y la derivada es negativa en el intervalo , por lo que la función es decreciente en este intervalo.En el punto crítico
la derivada es positiva a la izquierda y negativa a la derecha, por lo que, según el criterio de la primera derivada, la función tiene un máximo relativo.En el punto crítico
la derivada es negativa a la izquierda y positiva a la derecha, por lo que, según el criterio de la primera derivada, la función tiene un mínimo relativo.Calcular segunda la derivada de
y dibujar su gráfica en la misma gráfica que la de .Soluciónplot!(diff(g(x), x, 2), label=L"g''(x)="*latexify(simplify(diff(g(x), x, 2)))) Plots.
Calcular los puntos que anulan la segunda derivada de
.SoluciónN.(solve(diff(g(x), x, 2)))
3-element Vector{Real}: 0 -1.7320508075688772 1.7320508075688772
Existen tres puntos donde se anula
, en , y aproximadamente.A la vista de las raíces de la gráfica de la segunda derivada, determinar los intervalos de concavidad y los puntos de inflexión de la función
.AyudaUna función
dos veces derivable en el punto es cóncava hacia arriba si y solo si y cóncava hacia abajo si y solo si . Los puntos de inflexión de una función son los puntos donde cambia la concavidad.SoluciónLa segunda derivada es positiva en los intervalos
y , por lo que la función es cóncava hacia arriba en esos intervalos, y la segunda derivada es negativa en los intervalos y , por lo que la función es cóncava hacia abajo en esos intervalos. tiene tres puntos de inflexión en , y , donde cambia la concavidad de la función.
Ejercicio 5.7 Considérese la curva con ecuación
Dibujar la gráfica de la curva.
AyudaPara dibujar curvas implícitas utilizar la función
implicit_plot
del paqueteImplicitPlots
.Soluciónusing ImplicitPlots, Plots, SymPy, LaTeXStrings, Latexify @syms x::real y::real f(x,y) = x^4 - 3x^2 + 2y^2 implicit_plot(f; xlims=(-3,3), ylims=(-1.5,1.5), label=L"x^4-3x^2+2y^2=0", legend=:topleft) ImplicitPlots.
Calcular la tasa de variación de
con respecto a en el punto .AyudaPara realizar derivadas implícitas simbólicamente hay que definir una función simbólica con el comando
@syms u()
del paqueteSymPy
y reemplazary
poru(x)
en la ecuación de la curva implícita.Después hay que hacer la derivada de ambos lados de la ecuación y finalmente hay que resolver la ecuación despejando la derivada de
u(x)
.Solución# Declaramos una función simbólica. @syms u() # Reemplazamos y por una función implícita u(x) y calculamos la derivada implícitamente. = diff(f(x, u(x))) df # Resolvemos la ecuación para la derivada de u(x). = solve(df, diff(u(x)))[1] du # Deshacemos el cambio y = u(x). = du(u(x) => y) dy
Dibujar la recta tangente a la curva anterior en el punto
.Soluciónusing Latexify # Definimos la función de la recta tangente = 1 + dy(1,1) * (x-1) tg plot!(tg, label="Tangente "*L"y="*latexify(tg)) Plots.# Dibujamos el punto (1,1) scatter!([1],[1], label="") Plots.
Ejercicio 5.8 Crear una función para calcular el polinomio de Taylor de grado
La fórmula del polinomio de Taylor de grado
using Plots, SymPy, LaTeXStrings, Latexify
@syms x::real
function taylor(f, a=0, n=2)
sum(diff(f, x, i)(a) / factorial(i) * (x-a)^i for i=0:n)
end
f(x) = sin(x)
= Plots.plot(f, ylims=(-2,2), linewidth=3, label=L"f(x)=\operatorname{sen}(x)")
plt
for i in 1:5
= taylor(f(x), 0, i)
pol = Plots.plot!(pol, label=latexstring("P^{$(i)}(x)=$(pol)"))
plt end
plt
Calculamos ahora los errores cometidos al aproximar
= []
errores for i in 1:9
= taylor(f(x), 0, i)
pol push!(errores, abs(sin(pi/6)-pol(pi/6)))
end
errores
9-element Vector{Any}:
0.0235987755982989
0.0235987755982989
0.000325820605636185
0.000325820605636185
2.13258879250278e-6
2.13258879250278e-6
8.13097672525132e-9
8.13097672525132e-9
2.02799443904667e-11
Finalmente, dibujamos los errores cometidos.
scatter(1:9, errores, xlab="Grado", ylab="Error", legend=false) Plots.
Ejercicio 5.9 Calcular los polinomios de Taylor hasta grado 10 de las siguientes funciones en los puntos indicados.
en .AyudaPara calcular polinomios de Taylor utilizar la función
series
del paqueteSymPy
.AdvertenciaLa función
series
da el polinomio de grado junto con el error de orden , por lo que si se quiere un polinomio de orden hay que llamar a la función con un orden .Soluciónusing SymPy @syms x::real f(x) = cos(x) series(f(x), x, PI/2, 11) SymPy.
enSolucióng(x) = log(x) series(g(x), x, 1, 11) SymPy.
en
Soluciónh(x) = exp(sin(x)) series(h(x), x, 0, 11) SymPy.
Ejercicio 5.10 Aproximar el número
El error en la aproximación de una función
Utilizaremos un polinomio de MacLaurin de grado 5 para la función
using SymPy
@syms x::real
f(x) = log(1+x)
= SymPy.series(f(x), x, 0, 6).removeO()
pol println("Aproximación de ln(1.2): ", N(pol(0.2)))
Aproximación de ln(1.2): 0.18233066666666667
Para dar una cota del error cometido calculamos el resto de Taylor en la forma de Lagrange.
= diff(f(x), x, 6) / factorial(6) * 0.2^6
resto println("Resto de Taylor de orden 6: ", resto)
println("Derivada del resto : ", diff(resto))
Resto de Taylor de orden 6: -1.06666666666667e-5/(x + 1)^6
Derivada del resto : 6.4e-5/(x + 1)^7
Como la derivada no se anula en el intervalo
println("Cota del error: " , maximum(N(abs.([resto(0), resto(0.2)]))))
println("Error: ", abs(log(1.2)-pol(0.2)))
Cota del error: 1.06666666666667e-5
Error: 9.10987271207642e-6
Así pues, el error en la aproximación de
Para ver la fórmula general del resto de Taylor en la forma de Lagrange para un polinomio de Taylor de orden
println("Primera derivada: ", diff(f(x)))
println("Segunda derivada: ", diff(f(x), x, 2))
println("Tercera derivada: ", diff(f(x), x, 3))
println("Cuarta derivada: ", diff(f(x), x, 4))
Primera derivada: 1/(x + 1)
Segunda derivada: -1/(x + 1)^2
Tercera derivada: 2/(x + 1)^3
Cuarta derivada: -6/(x + 1)^4
Así pues, se deduce que la derivada de orden
Como se trata de una función positiva y decreciente en el intervalo
Finalmente calculamos el primer número natural
=6
nwhile 0.2^(n+1) / (n*(n+1)) > 10^-10
+= 1
n end
print(n)
11
Así pues, habría que llegar al grado 11.
5.2 Ejercicios propuestos
Ejercicio 5.11 Dada la función
¿Para qué valores de
Ejercicio 5.12 ¿Cuál es la derivada de orden
Ejercicio 5.13 Dadas las funciones
Ejercicio 5.14 Calcular el máximo y el mínimo absoluto de la función
Mínimo absoluto
Máximo absoluto
Ejercicio 5.15 ¿Cuáles de las siguientes afirmaciones son ciertas sobre la función
Ejercicio 5.16 Una cuerda de longitud
Puesto que la longitud de la cuerda es fija, del siguiente diagrama se deduce que las las posiciones
Coordenada x
Coordenada y
Ejercicio 5.17 Calcular de manera aproximada el valor de
Polinomio de Taylor de grado 20 en el punto
.Polinomio de MacLaurin de grado 100.
¿Qué polinomio da una mejor aproximación?