1. Ejemplo - Trayectoria parabólica de una partícula

Referencia: Steward 10.1 Ejemplo 1 p640
Imagina que una partícula se mueve a lo largo de la curva definida por las ecuaciones paramétricas:
x= t^2 - 2t y= t+1Realice el trazado de la curva para t en el intervalo [-2,4]
1.1 Algoritmo en Python
El resultado del algoritmo es:
Curvas por ecuaciones paramétricas
i,[ti,xi,yi]
0 [-2.0, 8.0, -1.0]
1 [-1.0, 3.0, 0.0]
2 [0.0, 0.0, 1.0]
3 [1.0, -1.0, 2.0]
4 [2.0, 0.0, 3.0]
5 [3.0, 3.0, 4.0]
6 [4.0, 8.0, 5.0]
Instrucciones en Python para curvas paramétricas.
# Ejercicio Steward 10.1 p640
# Curvas por ecuaciones paramétricas
import numpy as np
# INGRESO
fx = lambda t: t**2 - 2*t
fy = lambda t: t + 1
a = -2
b = 4
muestras = 7
titulo = 'Curvas por ecuaciones paramétricas'
verdecimales = 4
# PROCEDIMIENTO
ti = np.linspace(a,b,muestras)
xi = fx(ti)
yi = fy(ti)
# SALIDA
np.set_printoptions(verdecimales)
print(titulo)
print('i,[ti,xi,yi]')
for i in range(0,muestras,1):
print(i,[ti[i],xi[i],yi[i]])
1.2 Gráfica en Python

La gráfica requiere añadir muestras para suavizar la curva. Por ejemplo se crean el triple de muestras para la gráfica.
# GRAFICA ---------------------
import matplotlib.pyplot as plt
# suavizar la curva
muestras_graf = 4*muestras
tk = np.linspace(a,b,muestras_graf)
xk = fx(tk)
yk = fy(tk)
dt = tk[1]-tk[0]
plt.plot(xk,yk,label='f(x)') # suave
plt.plot(xi,yi,'o',label='[xi,yi]') # muestras
# etiquetas
for i in range(0,muestras,1):
if muestras<=10: # etiquetas de tiempo
plt.annotate('t='+str(np.round(ti[i],verdecimales)),
xy=[xi[i],yi[i]],
xytext=[xi[i],yi[i]])
if muestras<=10 and i<muestras: # etiqueta direccion
plt.annotate("", xytext=(xi[i], yi[i]),
xy=(fx(ti[i]+dt),fy(ti[i]+dt)),
arrowprops=dict(arrowstyle="->"))
# entorno de grafica
plt.axhline(0,color='gray')
plt.axvline(0,color='gray')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.title(titulo)
plt.tight_layout()
plt.show()
2. Ejemplo - Trayectoria circular de una partícula

Referencia: Steward 10.1 Ejemplo 2 p641
Considera una partícula se mueve a lo largo de la curva definida por las ecuaciones paramétricas:
x= cos(t) y= sen(t)Realice el trazado de la curva para t en el intervalo [0,2π ]
Usando el algoritmo anterior, el bloque de ingreso se actualiza a:
# INGRESO
fx = lambda t: np.cos(t)
fy = lambda t: np.sin(t)
a = 0 # intervalo t entre [a,b]
b = 2*np.pi
muestras = 9
Obteniendo los siguientes resultados:
i,[ti,xi,yi]
0 [0.0, 1.0, 0.0]
1 [0.7853981633974483, 0.7071067811865476, 0.7071067811865476]
2 [1.5707963267948966, 6.123233995736766e-17, 1.0]
3 [2.356194490192345, -0.7071067811865475, 0.7071067811865476]
4 [3.141592653589793, -1.0, 1.2246467991473532e-16]
5 [3.9269908169872414, -0.7071067811865477, -0.7071067811865475]
6 [4.71238898038469, -1.8369701987210297e-16, -1.0]
7 [5.497787143782138, 0.7071067811865474, -0.7071067811865477]
8 [6.283185307179586, 1.0, -2.4492935982947064e-16]
Para que los ejes sean de la misma proporción, necesaria para dibujar el círculo, se añade en la sección gráfica de entorno la instrucción
plt.axis('equal')

Sin embargo, para el caso de la circunferencia, también se puede usar gráfica superior y lateral para observar t vs x, t vs y.

El algoritmo requiere actualiza la parte gráfica para incorporar los sub-gráficos:
# Ejercicio Steward 10.2 p641
# Curvas por ecuaciones paramétricas
import numpy as np
# INGRESO
fx = lambda t: np.cos(t)
fy = lambda t: np.sin(t)
a = 0 # intervalo t entre [a,b]
b = 2*np.pi
muestras = 9
titulo = 'Curvas por ecuaciones paramétricas'
verdecimales = 4
# PROCEDIMIENTO
ti = np.linspace(a,b,muestras)
xi = fx(ti)
yi = fy(ti)
# SALIDA
np.set_printoptions(verdecimales)
print(titulo)
print('i,[ti,xi,yi]')
for i in range(0,muestras,1):
print(i,[ti[i],xi[i],yi[i]])
# GRAFICA ---------------------
import matplotlib.pyplot as plt
# suavizar la curva
muestras_graf = 4*muestras
tk = np.linspace(a,b,muestras_graf)
xk = fx(tk)
yk = fy(tk)
dt = tk[1]-tk[0]
plt.subplot(221) # t vs x ---------
plt.plot(xk,tk) # suave
plt.plot(xi,ti,'o',label='[ti,xi]')
# entorno de grafica
plt.axhline(0,color='gray')
plt.axvline(0,color='gray')
plt.xlabel('x')
plt.ylabel('t')
plt.legend()
plt.subplot(223) # x vs y ---------
plt.plot(xk,yk) # suave
plt.plot(xi,yi,'o',label='[xi,yi]')
# etiquetas
for i in range(0,muestras,1):
if muestras<=10: # etiquetas de tiempo
plt.annotate('t='+str(np.round(ti[i],verdecimales)),
xy=[xi[i],yi[i]],
xytext=[xi[i],yi[i]])
if muestras<=10 and i<muestras: # etiqueta direccion
plt.annotate("", xytext=(xi[i], yi[i]),
xy=(fx(ti[i]+dt),fy(ti[i]+dt)),
arrowprops=dict(arrowstyle="->"))
# entorno de grafica
plt.axhline(0,color='gray')
plt.axvline(0,color='gray')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.subplot(224) # t vs y ---------
plt.plot(tk,yk) # suave
plt.plot(ti,yi,'o',label='[ti,yi]')
# entorno de grafica
plt.axhline(0,color='gray')
plt.axvline(0,color='gray')
plt.xlabel('t')
plt.ylabel('y')
plt.legend()
plt.suptitle(titulo)
plt.tight_layout()
plt.show()
3. Otras ecuaciones paramétricas
3.1 Ejercicio - trigonométricas a diferente frecuencia
Referencia: Steward 10.1 Ejercicio Figura 11 p643
x= sin(9t) y= sen(10t)Realice el trazado de la curva para t en el intervalo [0,2π ]
Recuerde ajustar el número de muestras para el gráfico.

3.2 Ejercicio - suma de trigonométricas
Referencia: Steward 10.1 Ejercicio Figura 12 p643
x= 2.3 cos(10t)+cos(23t) y= 2.3 sen(10t)-sen(23t)Realice el trazado de la curva para t en el intervalo [0,2π ]
Recuerde ajustar el número de muestras para el gráfico.

3.3 Ejemplo Cicloide
Referencia: Steward 10.1 Ejercicio 7 p643
x= r(t - sin(t)) y= r(1 - cos(t))Realice el trazado de la curva para t en el intervalo [0,4π ]
# INGRESO
r = 1
fx = lambda t: r*(t-np.sin(t))
fy = lambda t: r*(1-np.cos(t))
a = 0
b = 4*np.pi
muestras = 9
titulo = 'Ecuaciones paramétricas - Cicloide'
verdecimales = 4
# suavizar la curva
muestras_graf = 4*muestras+1
