1. Ejercicio - Hélice en 3D
Referencia: Steward 13.1 Ejemplo 4 p848
Trace la curva cuya ecuación vectorial es
r(t) = cos(t) \mathbf{i} + sen(t)\mathbf{j} +t \mathbf{k}
1.1 Desarrollo analítico - paso a paso
Se puede expresar las ecuaciones paramétricas de la curva para cada eje
x(t) = cos(t) y(t) = sen(t) z(t) = tse define el intervalo t entre [0,10] para 41 muestras. Se aumenta el número de muestras para hacer la curva mas suave.
1.2 Algoritmo en Python
Para cada eje se escribe una ecuación, que se puede integrar como una sola dependiente de la variable t que entrega un arreglo con los valores resultantes para cada eje,
# INGRESO
fx = lambda t: np.cos(t)
fy = lambda t: np.sin(t)
fz = lambda t: t
rt = lambda t: np.array([fx(t),fy(t),fz(t)],dtype=float)
Para la observación se añade el intervalo para la variable t, [a,b] y la cantidad de muestras a observar, de forma semejante a lo realizado para las gráficas en 2D.
# Ejercicio Steward 13.1 p848
import numpy as np
# INGRESO
fx = lambda t: np.cos(t)
fy = lambda t: np.sin(t)
fz = lambda t: t
rt = lambda t: np.array([fx(t),fy(t),fz(t)]
,dtype=float)
a = 0 # intervalo t entre [a,b]
b = 10
muestras = 41
verdigitos = 4
titulo = 'Funciones vectoriales - Hélice'
# PROCEDIMIENTO
ti = np.linspace(a,b,muestras)
ri = rt(ti)
# SALIDA
np.set_printoptions(verdigitos)
print(titulo)
print('i, ti, [xi, yi, zi]')
for i in range(0,muestras,1):
print(i, np.around(ti[i],verdigitos),
ri[:,i])
# GRAFICA ---------------------
import matplotlib.pyplot as plt
fig3D = plt.figure()
graf3D = fig3D.add_subplot(111, projection='3d')
graf3D.plot(ri[0],ri[1],ri[2],
color ='blue',label='[x,y,z]')
graf3D.scatter(ri[0,0],ri[1,0],ri[2,0],
c = 'red',marker='o', label = 'x0,y0,z0')
graf3D.scatter(ri[0,muestras-1],ri[1,muestras-1],ri[2,muestras-1],
c = 'green',marker='o', label = 'xn,yn,zn')
# entorno gráfico
graf3D.set_title(titulo)
graf3D.set_xlabel('x')
graf3D.set_ylabel('y')
graf3D.set_zlabel('z')
graf3D.legend()
plt.show()
obteniendo como resultado:
Funciones vectoriales - Hélice
i, ti, [xi, yi, zi]
0 0.0 [1. 0. 0.]
1 0.25 [0.9689 0.2474 0.25 ]
2 0.5 [0.8776 0.4794 0.5 ]
3 0.75 [0.7317 0.6816 0.75 ]
4 1.0 [0.5403 0.8415 1. ]
5 1.25 [0.3153 0.949 1.25 ]
...

2. Ejercicio - Elipse en 3D
Referencia: Steward 13.1 Ejemplo 5 p850
Determine una función vectorial que represente la curva de intersección del cilindro
x^2 + y^2 =1y el plano: y+z=2
2.2 Desarrollo analítico - paso a paso
La proyección en el plano xy es el círculo, por lo que se escribe en función de t:
x(t) = cos(t) y(t) = sen(t) 0 \leq t \leq 2\pide la ecuación del plano se tiene: z = 2-y, por lo que se tiene:
x(t) = cos(t) y(t) = sen(t) z(t) = 2 - sen(t)con la ecuación de la curva
x(t) = cos(t) \mathbf{i} + sen(t) \mathbf{j} + (2 - sen(t)) \mathbf{k}
2.2 Algoritmo en Python
Siguiendo el ejemplo anterior, se modifica en el algoritmo el bloque de ingreso:
# INGRESO
fx = lambda t: np.cos(t)
fy = lambda t: np.sin(t)
fz = lambda t: 2-np.sin(t)
rt = lambda t: np.array([fx(t),fy(t),fz(t)]
,dtype=float)
a = 0 # intervalo t entre [a,b]
b = 2*np.pi
muestras = 41
verdigitos = 4
titulo = 'Funciones vectoriales - Elipse'
con los siguientes resultados:
Funciones vectoriales - Elipse
i, ti, [xi, yi, zi]
0 0.0 [1. 0. 2.]
1 0.1571 [0.9877 0.1564 1.8436]
2 0.3142 [0.9511 0.309 1.691 ]
3 0.4712 [0.891 0.454 1.546]
4 0.6283 [0.809 0.5878 1.4122]
5 0.7854 [0.7071 0.7071 1.2929]
...
