using Plots
using LaTeXStrings
plot([0, 3], [0, 1], arrow = true, linewidth = 2, legend = false)
Plots.annotate!(1.5, 0.4, L"$\mathbf{u}$")
.plot!([0, 1], [0, 2], arrow = true, linewidth = 2)
Plotsannotate!(0.4, 1, L"$\mathbf{v}$")
.plot!([3, 1], [1, 2], arrow = true, linewidth = 2)
Plotsannotate!(2.1, 1.6, L"$\mathbf{u}-\mathbf{v}$")
8 Funciones vectoriales
8.1 Ejercicios Resueltos
Para la realización de esta práctica se requieren los siguientes paquetes:
using SymPy # Para el cálculo simbólico.
using Plots # Para el dibujo de gráficas.
using Makie, GLMakie # Para el dibújo de gráficas en 3d.
using LaTeXStrings # Para usar código LaTeX en los gráficos.
using LinearAlgebra # Para el módulo, producto escalar y vectorial de vectores.
using Roots # Para calcular soluciones de ecuaciones numéricamente.
Ejercicio 8.1 Representar gráficamente los vectores \(\mathbf{u}=(3,1)\), \(\mathbf{v}=(1,2)\) y \(\mathbf{u}-\mathbf{v}\) en el plano real \(\mathbb{R}^2\).
using GLMakie
using LaTeXStrings
= Point2(0, 0)
o = Vec2(3, 1)
u = Vec2(1, 2)
v = Figure()
fig = Axis(fig[1,1])
ax arrows!(ax, [o], [u], color = :blue)
text!(ax, 1.5, 0.4, text = L"$\mathbf{u}$")
!(ax, [o], [v], color = :red)
arrowstext!(ax, 0.4, 1, text = L"$\mathbf{v}$")
!(ax, [o+v], [u-v], color = :green)
arrowstext!(ax, 2.1, 1.6, text = L"$\mathbf{u}-\mathbf{v}$")
fig
Ejercicio 8.2 Sean \(\mathbf{u}=(1,2,-1)\) y \(\mathbf{v}=(3,0,2)\) dos vectores del espacio real \(\mathbb{R}^3\).
Calcular el módulo (norma) de ambos vectores y construir vectores unitarios con su misma dirección.
AyudaUsar la función
norm
del paqueteLinearAlgebra
para calular el módulo de un vector.Soluciónusing LinearAlgebra = [-1, 2, -1] u = [-2, 0, 1] v println("Módulo de u: $(norm(u))") println("Módulo de v: $(norm(v))") println("Vector unitario con la dirección de u $(u/norm(u))") println("Vector unitario con la dirección de v $(v/norm(v))")
Módulo de u: 2.449489742783178 Módulo de v: 2.23606797749979 Vector unitario con la dirección de u [-0.4082482904638631, 0.8164965809277261, -0.4082482904638631] Vector unitario con la dirección de v [-0.8944271909999159, 0.0, 0.4472135954999579]
Calcular su producto escalar.
AyudaUsar la función
dot
del paqueteLinearAlgebra
para calcular el producto escalar de dos vectores.Soluciónprintln("Producto escalar de u y v: $(dot(u, v))") # También se puede usar el clásico punto ⋅ println("Producto escalar de u y v: $(u ⋅ v)")
Producto escalar de u y v: 1 Producto escalar de u y v: 1
Calcular su producto vectorial.
AyudaUsar la función
cross
del paqueteLinearAlgebra
para calcular el producto vectorial de dos vectores.Soluciónprintln("Producto vectorial de u y v: $(cross(u, v))") # También se puede usar la clásica cruz × println("Producto vectorial de u y v: $(u × v)")
Producto vectorial de u y v: [2, 3, 4] Producto vectorial de u y v: [2, 3, 4]
Dibujar \(\mathbf{u}\), \(\mathbf{v}\) y \(\mathbf{u}\times\mathbf{v}\) en el espacio real.
Soluciónusing Plots = u × v uv plot([0, u[1]], [0, u[2]], [0, u[3]], arrow = true, linewidth = 2, xlabel = "X", ylabel = "Y", zlabel = "Z", legend = false) Plots.plot!([0, v[1]], [0, v[2]], [0, v[3]], arrow = true, linewidth = 2) Plots.plot!([0, uv[1]], [0, uv[2]], [0, uv[3]], arrow = true, linewidth = 2) Plots.
using GLMakie = Figure() fig = Axis3(fig[1,1], azimuth = -pi/4, aspect = (1,1,1)) ax = [0, 0 ,0] O arrows!(ax, [Point3(O)], [Vec3(u), Vec3(v), Vec3(u × v)], = [:blue,:red, :green], arrowcolor = [:blue,:red, :green], linecolor = 0.02, arrowsize = Vec3(0.1, 0.1, 0.1)) linewidth fig
Ejercicio 8.3 Dibujar las trayectorias de las siguientes funciones vectoriales.
\(f(t)=(\operatorname{sen}(t), \cos(t))\).
AyudaSoluciónusing Plots f(t) = [sin(t), cos(t)] = range(0, 2pi, length = 200) ts = [f(t)[1] for t in ts] xs = [f(t)[2] for t in ts] ys plot(xs, ys, aspect_ratio = :equal) Plots.
using GLMakie f(t) = [sin(t), cos(t)] = range(0, 2pi, length = 200) ts = Point2.(f.(ts)) points = Figure() fig = Axis(fig[1,1], aspect = 1) ax lines!(ax, points, linewidth = 2, color = :blue) fig
\(\mathbf{g}(t) = (\cos(t), \operatorname{sen}(t), t/4)\).
Solucióng(t) = [cos(t), sin(t), t/4] = range(0, 2pi, length = 200) ts = [g(t)[1] for t in ts] xs = [g(t)[2] for t in ts] ys = [g(t)[3] for t in ts] zs plot(xs, ys, zs, aspect_ratio = :equal, xlabel = "X", ylabel = "Y", zlabel = "Z", label = "") Plots.
using GLMakie g(t) = [cos(t), sin(t), t/4] = range(0, 2pi, length = 200) ts = Point3.(g.(ts)) points = Figure() fig = Axis3(fig[1,1]) ax lines!(ax, points, linewidth = 2, color = :blue) fig
Ejercicio 8.4 Un nudo tórico es un nudo que se forma mediante una trayectoria que gira sobre la superficie de un toro en \(\mathbb{R}^3\). La función vectorial que define este tipo de nudos sobre un toro de ecuación \((r-2)^2+z^2 = 1\) es \(\mathbf{f}(t) = ((2+\cos(qt))\cos(pt), (2+\cos(qt))\operatorname{sen}(pt), -\operatorname{sen}(qt))\), donde \(p\) y \(q\) son dos enteros primos entre si y \(t\in [0,2\pi]\).
Dibujar el nudo tórico con \(p=2\) y \(q=3\).
SoluciónUsando el paquete
Makie
.using GLMakie # Definimos las ecuaciones paramétricas del toro. = range(-pi, pi, 100) U = range(-pi, pi, 20) V = [2cos(u) + cos(u) * cos(v) for u in U, v in V] x1 = [2sin(u) + sin(u) * cos(v) for u in U, v in V] y1 = [sin(v) for u in U, v in V] z1 # Inicializamos la figura y los ejes. = Figure() fig = Axis3(fig[1,1], aspect = (3, 3, 1)) ax # Dibujamos el toro. surface!(ax, x1, y1, z1; colormap = :viridis, transparency = true, alpha = 0.5) Makie.# Definimos la función vectorial de nudo tórico. f(t) = [(2+cos(3t))cos(2t), (2+cos(3t))sin(2t), -sin(3t)] # Generamos los puntos de la trayectoria del nudo tórico. = range(0, 2pi, length = 200) ts = Point3.(f.(ts)) points # Dibujamos el nudo tórico. lines!(ax, points, linewidth = 3, color = :red) fig
Definir una función para crear nudos tóricos con parámetros
p
yq
para los enteros que definen el toro y un parámetro opcional booleanotoro
, para dibujar el toro o no.Soluciónusing GLMakie """ nudo_torico(ax, p, q, toro) Función dibuja un nudo tórico de parámetros p, q sobre los ejes ax. Si el parámetro toro es true dibuja también el toro sobre el que se traza el nudo. """ function nudo_torico(ax::Axis3, p::Int64, q::Int64, toro::Bool = true) if toro = 0.5 alpha else = 0 alpha end # Definimos las ecuaciones paramétricas del toro. = range(-pi, pi, 100) U = range(-pi, pi, 20) V = [2cos(u) + cos(u) * cos(v) for u in U, v in V] x1 = [2sin(u) + sin(u) * cos(v) for u in U, v in V] y1 = [sin(v) for u in U, v in V] z1 # Dibujamos el toro en los ejes. surface!(ax, x1, y1, z1; colormap = :viridis, transparency = true, alpha = alpha) Makie.# Definimos la función vectorial de nudo tórico. f(t) = [(2+cos(q*t))cos(p*t), (2+cos(q*t))sin(p*t), -sin(q*t)] # Generamos los puntos de la trayectoria del nudo tórico. = range(0, 2pi, length = 200) ts = Point3.(f.(ts)) points # Dibujamos el nudo tórico. lines!(ax, points, linewidth = 3, color = :red) end = Figure() fig = Axis3(fig[1,1], aspect = (3, 3, 1)) ax nudo_torico(ax, 5, 9, true) fig
Ejercicio 8.5
Calcular las ecuaciones de la rectas tangente y normal a la trayectoria \(\mathbf{f}(t) = (\operatorname{sen}(2t), \cos(t))\) en el punto correspondiente a \(t=\pi/2\) y dibujarlas.
AyudaLa ecuación de la recta tangente a la trayectoria de la función vectorial \(\mathbf{f}(t)\) en el instante \(t=a\) es \(\mathbf{f}(a)+\mathbf{f}'(a)t\).
La ecuación de la recta normal a la trayectoria de la función vectorial \(\mathbf{f}(t)\) en el instante \(t=a\) es \(\mathbf{f}(a)+\mathbf{N}(a)t\), donde \(\mathbf{N}(a)\) es un vector normal a \(f'(a)\), como por ejemplo \(\mathbf{N}(a) = (f'(a)_2, -f'(a)_1)\).
Soluciónusing SymPy, Plots @syms t::real # Definimos la función vectorial. f(t) = [sin(2t), cos(t)] # Instante = pi/2 a # Dibujamos la trayectoria. plot(f(t)..., 0, 2pi, aspect_ratio = :equal, label = "f(t)=(sen(t), cos(t))") Plots.# Dibujamos el punto de tangencia. scatter!([f(a)[1]],[f(a)[2]], label = "") Plots.# Calculamos la función derivada. = lambdify(diff.(f(t))) df # Calculamos la ecuación de la recta tangente. tl(t) = f(a) + df(a) * t # Dibujamos la recta tangente. plot!(tl(t)..., -1, 1, label = "Tangente") Plots.# Calculamos la ecuación de la recta normal. nl(t) = f(a) - [df(a)[2],-df(a)[1]] * t plot!(nl(t)..., -0.6, 0.6, label = "Normal") Plots.
using SymPy, GLMakie @syms t::real # Definimos la función vectorial. f(t) = [sin(2t), cos(t)] # Instante = pi/2 a # Dibujamos la trayectoria. = range(0, 2pi, 200) ts = Point2.(f.(ts)) points = Figure() fig = Axis(fig[1,1], aspect = DataAspect()) ax lines!(ax, points) # Dibujamos el punto de tangencia. scatter!(Point2(f(a)), color = :red) Makie.# Calculamos la función derivada. = lambdify(diff.(f(t))) df # Calculamos la ecuación de la recta tangente. tl(t) = f(a) + df(a) * t # Dibujamos la recta tangente. = Point2.(tl.(range(-1, 1, 2))) pointstl lines!(ax, pointstl) # Calculamos la ecuación de la recta normal nl(t) = f(a) - [df(a)[2],-df(a)[1]] * t = Point2.(nl.(range(-0.6, 0.6, 2))) pointsnl lines!(ax, pointsnl) fig
Calcular las ecuaciones de las recta tangente y el plano normal a la trayectoria \(\mathbf{g}(t) = (\cos(t), \operatorname{sen}(t), \sqrt{t})\) en punto correspondiente a \(t=\pi/2\) y dibujarlas.
Soluciónusing SymPy, LinearAlgebra, GLMakie @syms x, y, z, t # Definimos la función vectorial. g(t) = [cos(t), sin(t), sqrt(t)] # Instante = pi/2 a # Dibujamos la trayectoria. = range(0, 2pi, 200) ts = Point3.(g.(ts)) points = Figure() fig = Axis3(fig[1,1], title = "Recta tangente y plano normal a una trayectoria", aspect = :equal) ax lines!(ax, points) # Dibujamos el punto de tangencia. scatter!(Point3(g(a)), color = :red) Makie.# Calculamos la derivada en el punto. = lambdify(diff.(g(t))) dg # Calculamos la ecuación de la recta tangente. tl(t) = g(a) + dg(a) * t # Dibujamos la recta tangente. = Point3.(tl.(range(-pi, pi, 2))) pointstl lines!(ax, pointstl) # Calculamos la ecuación del plano normal = lambdify(solve(dot(([x, y, z] - g(a)), dg(a)), z)[1]) np = range(-1, 1, 2) xs = range(0, 2, 2) ys = [np(x,y) for x in xs, y in ys] zs surface!(ax, xs, ys, zs, colormap = ["red"], alpha = 0.5, transparency = true) Makie. fig
Ejercicio 8.6 Dada una función vectorial \(\mathbf{f}(t)\) en \(\mathbb{R}^3\), el plano osculador de la trayectoria de \(\mathbf{f}(t)\) en \(t=a\) es el plano definido por los vectores tangente \(\mathbf{T}(a)\) y normal \(\mathbf{N}(a)\).
Calcular y dibujar el plano osculador de la función vectorial del nudo tórico del apartado a del ejercicio Ejercicio 8.4 en el punto correspondiente a \(t=\pi/2\).
Usando el paquete Makie
.
using SymPy, LinearAlgebra, GLMakie
@syms x, y, z, t::real
# Definimos las ecuaciones paramétricas del toro.
= range(-pi, pi, 100)
U = range(-pi, pi, 20)
V = [2cos(u) + cos(u) * cos(v) for u in U, v in V]
x1 = [2sin(u) + sin(u) * cos(v) for u in U, v in V]
y1 = [sin(v) for u in U, v in V]
z1 # Inicializamos la figura y los ejes.
= Figure()
fig = Axis3(fig[1,1], aspect = (3, 3, 1))
ax # Dibujamos el toro.
surface!(ax, x1, y1, z1; colormap = :viridis, shading = false, transparency = true, alpha = 0.5)
Makie.# Definimos la función vectorial de nudo tórico.
f(t) = [(2+cos(3t))cos(2t), (2+cos(3t))sin(2t), -sin(3t)]
# Generamos los puntos de la trayectoria del nudo tórico.
= range(0, 2pi, length = 200)
ts = Point3.(f.(ts))
points # Dibujamos el nudo tórico.
lines!(ax, points, linewidth = 3, color = :red)
# Punto
= pi/2
a # Dibujamos el punto.
scatter!(ax, Point3(f(a)))
Makie.# Vector tangente unitario.
= lambdify(diff.(f(t)) / norm(diff.(f(t))))
Tan # Vector normal unitario.
= lambdify(diff.(Tan(t)) / norm(diff.(Tan(t))))
Norm # Calculamos la ecuación del plano osculador.
= lambdify(solve(dot(([x, y, z] - f(a)), cross(Tan(a), Norm(a))), z)[1])
po = range(-3, -1, 2)
xs = range(-1, 1, 2)
ys = [po(x,y) for x in xs, y in ys]
zs surface!(ax, xs, ys, zs, colormap = ["magenta"], alpha = 0.8, transparency = true)
Makie. fig
┌ Warning: `shading = false` is not valid. Use `Makie.automatic`, `NoShading`, `FastShading` or `MultiLightShading`. Defaulting to `NoShading`.
└ @ Makie ~/.julia/packages/Makie/YkotL/src/lighting.jl:243
Ejercicio 8.7 Para construir un cuaderno de 30 cm de altura se utiliza una espiral de alambre con radio 1 cm y una distancia entre cada dos vueltas consecutivas \(\pi/4\) cm. Dibujar la espiral y calcular la cantidad de alambre necesaria para cada cuaderno.
La longitud de la trayectoria de una función vectorial \(\mathbf{f}(t)\) en el intervalo \(t\in [a,b]\) se calcula mediante la integral
\[ \int_a^b |\mathbf{f}'(t)|\, dt \]
Dibujamos primero la espiral.
using SymPy, GLMakie
@syms t::real
# Definimos la función vectorial.
f(t) = [cos(t), sin(t), t/8]
# Calculamos el número de revoluciones.
= N(solve(f(t)[3]-30)[1])
h # Dibujamos la trayectoria.
= range(0, h, 2000)
ts = Point3.(f.(ts))
points = Figure()
fig = Axis3(fig[1,1], title = "Espiral de un cuaderno", aspect = (1, 1, 30))
ax lines!(ax, points)
fig
A continuación calculamos la longitud de la espiral.
using LinearAlgebra
# Calculamos longitud de la trayectoria
N(integrate(norm(diff.(f(t))), (t, 0, h)))
241.8677324489565
Ejercicio 8.8 Dibujar la función de curvatura de campana de Gauss correspondiente a la función de densidad de una distribución normal estándar
\[ f(x) = \frac{1}{\sqrt{2\pi}}e^{-x^2/2}. \]
¿En qué puntos la curvatura es nula? ¿Dónde la curvatura es máxima localmente?
La curvatura de la gráfica de una función real \(f(x)\) se calcula mediante la fórmula
\[ \kappa(x) = \frac{|f''(x)|}{(1+f''(x)^2)^{3/2}}. \]
Dibujamos primero la gráfica de la función y la de la función curvatura.
using SymPy, GLMakie
@syms x::real
# Definimos la función.
f(x) = 1/sqrt(2pi) * exp(-x^2/2)
# Dibujamos la gráfica de la función.
= Figure()
fig = Axis(fig[1,1], autolimitaspect = 1)
ax lines!(ax, -3..3, f, label = L"$f(t)= \frac{1}{\sqrt{2\pi}}e^{-x^2/2}$")
fig# Calculamos la segunda derivada de la función.
= lambdify(diff(f(x), x, 2))
df2 # Calculamos la función de curvatura.
k(x) = abs(df2(x)) / (1 + df2(x)^2)^(3/2)
# Definimos una serie de puntos de la función curvatura.
= range(-3, 3, 200)
xs = Point2.(xs, k.(xs))
points # Dibujamos la función de curvatura
lines!(ax, points, label = "Curvatura")
# Añadimos la leyenda
axislegend()
fig
Ahora calculamos los puntos con curvatura máxima y mínima localmente.
# Calculamos los puntos que anulan la curvatura.
solve(k(x),x)
# Calculamos los puntos críticos de la curvatura.
# solve(diff(k(x)), x) No encuentra la solución, así que buscamos la solución numéricamente.
using Roots
println("Máximo local en x = $(find_zero(diff(k(x)), -2))")
println("Máximo local en x = $(find_zero(diff(k(x)), 0))")
println("Máximo local en x = $(find_zero(diff(k(x)), 2))")
Máximo local en x = -1.7320508075688772
Máximo local en x = 0.0
Máximo local en x = 1.7320508075688772
Ejercicio 8.9 La torsión de una trayectoria de una función vectorial \(\mathbf{f}(t)\) en el espacio real \(\mathbb{R}^3\) mide la intensidad con la que una curva se sale del plano osculador y se calcula con la fórmula
\[ \tau(t) = \frac{(\mathbf{f}'(t)\times \mathbf{f}''(t))\mathbf{f}'''(t)}{|\mathbf{f}'(t)\times \mathbf{f}''(t)|^2} \]
Definir una función para la curvatura y y otra para la torsión de la trayectoria de la función vectorial \(\mathbf{h}(t)=\cos(2t)\mathbf{i} + \operatorname{sen}(t) \mathbf{j} + \cos(t) \mathbf{k}\), y utilizarla para calcular la curvatura y la torsión en los instantes \(t=0, \pi/4, \pi/2, 3\pi/2\).
Calculamos primero la curvatura.
using SymPy, LinearAlgebra
"""
curvatura(h, a)
Calcula la curvatura de la trayectoria de una función vectorial h en el punto a.
"""
function curvatura(f, a)
@syms t::real
# Calculamos la primera derivada.
df(t) = diff.(f(t))
# Calculamos la segunda derivada.
df2(t) = diff.(df(t))
# Calculamos la curvatura
k(t) = norm(cross(df(t), df2(t))) / norm(df(t))^3
return N(subs(k(t), t=>a))
end
f(t) = [cos(2t), sin(t), cos(t)]
println("Curvatura en t=0: $(curvatura(f, 0))")
println("Curvatura en t=π/4: $(curvatura(f, pi/4))")
println("Curvatura en t=π/2: $(curvatura(f, pi/2))")
println("Curvatura en t=3π/4: $(curvatura(f, 3pi/4))")
Curvatura en t=0: 4.123105625617661
Curvatura en t=π/4: 0.2
Curvatura en t=π/2: 4.123105625617661
Curvatura en t=3π/4: 0.2
Y ahora calculamos la torsión.
using SymPy, LinearAlgebra
"""
torsion(h, a)
Calcula la torsion de la trayectoria de una función vectorial h en el punto a.
"""
function torsion(f, a)
@syms t::real
# Calculamos la primera derivada.
df(t) = diff.(f(t))
# Calculamos la segunda derivada.
df2(t) = diff.(df(t))
# Calculamos la tercera derivada.
df3(t) = diff.(df2(t))
# Calculamos la torsión.
τ(t) = dot(cross(df(t), df2(t)), df3(t)) / norm(cross(df(t), df2(t)))^2
return N(subs(τ(t), t=>a))
end
println("Torsión en t=0: $(torsion(f, 0))")
println("Torsión en t=π/4: $(torsion(f, pi/4))")
println("Torsión en t=π/2: $(torsion(f, pi/2))")
println("Torsión en t=3π/4: $(torsion(f, 3pi/4))")
Torsión en t=0: 0
Torsión en t=π/4: -1.2000000000000002
Torsión en t=π/2: -4.3222828205200695e-17
Torsión en t=3π/4: 1.2000000000000002
Ejercicio 8.10 Se lanza una pelota desde la terraza de un edificio de altura \(h\) con una rapidez inicial \(r\) y un ángulo sobre el horizonte \(\theta\). Estudiar la trayectoria que describe la pelota suponiendo que la única fuerza que actúa sobre ella es la de la gravedad.
Definir una función para calcular la función vectorial de la posición de la pelota tomando como parámetros la altura del edificio, la rapidez inicial y el ángulo de lanzamiento.
Soluciónusing SymPy """ pelota(h, r, θ) Devuelve un vector con las componentes de la función vectorial que define la posición de una pelota lanzada desde una altura h, con una rapidez r y un ángulo de lanzamiento θ con respecto al horizonte. """ function pelota(h, r, θ) @syms t::positive # Constante con al aceleración de la gravedad = 9.81 g # Posición inicial. = [0, h] p₀ # Velocidad inicial. = [r*cos(θ), r*sin(θ)] v₀ # Aceleración constante a(t) = [Sym(0), -g] # Obtenemos el vector velocidad integrando la aceleración. v(t) = integrate.(a(t), t) + v₀ # Obtenemos el vector posición integrando el vector velocidad. = integrate.(v(t), t) + p₀ pos return pos end
pelota
Construir una función para dibujar la gráfica de la trayectoria de la pelota tomando como parámetros la altura del edificio, la rapidez inicial y el ángulo de lanzamiento.
Soluciónusing GLMakie """ trayectoria_pelota(ax, h, r, θ) Dibuja sobre los ejes ax la gráfica de la trayectoria de una pelota lanzada desde una altura h, con una rapidez r y un ángulo de lanzamiento θ con respecto al horizonte. """ function trayectoria_pelota!(ax, h, r, θ) @syms t::positive # Lambdificamos la función para poder llamarla con parámetros. = lambdify(pelota(h, r, θ)) f # Calculamos el instante en el que la pelota toca el suelo. = N(solve(f(t)[2], t)[1]) t₀ # Definimos un rango de valores desde 0 hasta el instante en que la pelota toca el suelo. = range(0, t₀, 200) ts # Obtenemos los puntos de la trayectoria. = Point2.(f.(ts)) points # Dibujamos la trayectoria. lines!(ax, points, label = "h =$(h), r = $(r), θ = $(θ)") return ax end = Figure() fig = Axis(fig[1,1], title = "Trayectoria de la pelota", aspect = DataAspect()) ax trayectoria_pelota!(ax, 100, 20, PI/4) trayectoria_pelota!(ax, 100, 20, PI/6) trayectoria_pelota!(ax, 100, 20, PI/8) trayectoria_pelota!(ax, 100, 20, PI/10) # Añadimos la leyenda axislegend(position = :lb) fig
Si se lanza la pelota a nivel del suelo, con una rapidez de 20 m/s ¿para qué ángulo se alcanzará una mayor distancia? ¿Y si se lanza desde 100 m de altura?
SoluciónCalculamos primero el ángulo para una altura 0.
@syms θ, t:: positive # Definimos la función vectorial. g(t) = pelota(0, 20, θ) # Calculamos el instante en que la pelota toca el suelo. = solve(g(t)[2], t)[1] t₀ # Calculamos los puntos críticos de la derivada de la posición horizontal de la pelota. solve(diff(subs(g(t)[1], t=>t₀), θ))
\(\left[\begin{smallmatrix}-0.785398163397448\\0.785398163397448\end{smallmatrix}\right]\)
Y ahora para una altura de 100 m.
using Roots @syms θ, t:: positive # Definimos la función vectorial. g(t) = pelota(100, 20, θ) # Definimos la función vectorial. = solve(g(t)[2], t)[2] t₀ # Calculamos los puntos críticos de la derivada de la posición horizontal de la pelota. find_zero(diff(subs(g(t)[1], t=>t₀), θ), 0.5)
0.3903970673218906
Determinar las componentes tangencial y normal del vector aceleración, para una altura de 100 m, una rapidez de 20 m/s y un ángulo \(\pi/4\). Comprobar que la componente tangencial de la aceleración se anula en el mismo instante en el que la componente normal es máxima y cuando la pelota alcanza la máxima altura.
AyudaLa componente tangencial del vector aceleración se puede calcular con la fórmula
\[ a_T(t) = |\mathbf{v}(t)|' = \frac{\mathbf{f}'(t)\mathbf{f}''(t)}{|\mathbf{f}'(t)|}. \]
Y la componente normal mediante la fórmula
\[ a_N(t) = \kappa(t)|\mathbf{v}(t)|^2 = \frac{|\mathbf{f}'(t)\times \mathbf{f}''(t)|}{|\mathbf{f}'(t)|}. \]
Si la trayectoria no es en el plano real, se pueden aplicar estas fórmulas añadiendo una tercera componente nula.
SoluciónCalculamos primero la componente tangencial del vector aceleración.
using LinearAlgebra @syms t::positive # Creamos la función vectorial g(t) = pelota(100, 20, PI/4) # Añadimos una tercera componente nula para estar en el espacio real. = push!(g(t), 0) g3 # Calculamos la primera derivada (vector velocidad). = diff.(g3, t) dg # Calculamos la segunda derivada (vector aceleración). = diff.(dg, t) dg2 # Calculamos la componente tangencial del vector aceleración. = dot(dg, dg2) / norm(dg) at
\(\frac{96.2361 t - 98.1 \sqrt{2}}{\sqrt{100 \left(0.981 t - \sqrt{2}\right)^{2} + 200}}\)
Y a continuación la componente normal.
= norm(cross(dg, dg2)) / norm(dg) an
\(\frac{138.734350468801}{\sqrt{100 \left(0.981 t - \sqrt{2}\right)^{2} + 200}}\)
Ahora calculamos el instante en el que se anula la componente tangencial.
solve(at)
\(\left[\begin{smallmatrix}1.4416040391163\end{smallmatrix}\right]\)
Finalmente comprobamos que es el mismo instante en el que la componente normal de la aceleración es máxima.
# Instante en el que la componente normal de la acelaración es máxima. solve(diff(an))
\(\left[\begin{smallmatrix}1.4416040391163\end{smallmatrix}\right]\)
Y comprobamos también que coincide con el instante en que la pelota alcanza la máxima altura.
solve(diff(g(t)[2]))
\(\left[\begin{smallmatrix}1.4416040391163\end{smallmatrix}\right]\)
8.2 Ejercicios propuestos
Ejercicio 8.11 Calcular el módulo del producto vectorial de los vectores \((-\pi,\sqrt{2},1)\) y \((\sqrt{3},-e,-2)\).
Ejercicio 8.12 ¿A qué función vectorial le corresponde la trayectoria siguiente?
Ejercicio 8.13 Un mosquito sigue la trayectoria de la función \(f(t)=(\cos(t), t/2, \ln(t+1))\). Si en el instante \(t=1\) se sale por la tangente a la trayectoria, ¿a qué distancia del origen de coordenadas estará el mosquito en el instante \(t=2\)?
Ejercicio 8.14 ¿Cuál de las siguientes ecuaciones es la del plano normal a la trayectoria de la función \(g(t)=(\cos(t-1), \ln(\sqrt{t}), t^2)\) en el instante \(t=1\)?
Ejercicio 8.15 Un avión sigue la trayectoria de la función \(h(t)=(2t^2+t, \operatorname{sen}(t)+2cos(t), e^{-t/2})\).
¿Qué distancia habrá recorrido desde instante \(t=1\) hasta el instante \(t=5\)?
¿Cuál será la curvatura de la trayectoria en el instante \(t=2\)?
¿Cuál será la torsión de la trayectoria en el instante \(t=2\)?
Ejercicio 8.16 Un coche circula por una circuito elíptico cuya trayectoria viene dada por la función vectorial \(f(t)=(400\cos(10t), 100\operatorname{sen}(10t))\), donde \(t\) está dado en minutos y las coordenadas de \(f\) en metros.
Calcular la rapidez del vehículo en el instante \(t=\pi\).
Calcular el módulo del vector aceleración en el mismo instante.
Calcular la componente tangencial del vector aceleración en ese instante.
Calcular la componente normal del vector aceleración en ese instante.
Suponiendo que los neumáticos no proporcionan ningún agarre (por ejemplo porque hay hielo en la carretera), ¿Cuál es el mínimo ángulo que debería tener el peralte de la curva en este instante para que el coche no se salga del circuito? Tómese una aceleración debida a la gravedad de \(9.8\) m/s\(^2\).