Здесь у меня есть параметрическое уравнение.
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
t = np.linspace(0,2*np.pi, 40)
# Position Equation
def rx(t):
return t * np.cos(t)
def ry(t):
return t * np.sin(t)
# Velocity Vectors
def vx(t):
return np.cos(t) - t*np.sin(t)
def vy(t):
return np.sin(t) + t*np.cos(t)
# Acceleration Vectors
def ax(t):
return -2*np.sin(t) - t*np.cos(t)
def ay(t):
return 2*np.cos(t) - t*np.sin(t)
fig = plt.figure()
ax1 = fig.gca(projection='3d')
z = t
ax1.plot(rx(z), r(z), z)
plt.xlim(-2*np.pi,2*np.pi)
plt.ylim(-6,6)
ax.legend()
Итак, у меня есть это параметрическое уравнение, которое создает этот граф.
Я определил свои скоростные и ускорительные параметрические уравнения выше в моем коде.
То, что я хочу сделать, это построить векторы ускорения и скорости в моем графике позиции выше в определенных точках. (Id est, t = pi/2, 3pi/2, 2pi)
Что-то вроде этого:
Python/matplotlib: построение 3d-куба, сферы и вектора?
но я хочу сделать что-то более прямое, так как я должен определить каждую точку t в двух уравнениях.
Возможно ли такое? Я могу найти только векторные поля, а что нет.
Спасибо.
Изменить вопрос
# t = pi/4
t_val_start_pi4 = np.pi/4
vel_start_pi4 = [rx(t_val_start_pi4), ry(t_val_start_pi4), t_val_start_pi4]
vel_end_pi4 = [rx(t_val_start_pi4 ) + vx(t_val_start_pi4 ), ry(t_val_start_pi4 )+vy(t_val_start_pi4 ), t_val_start_pi4 ]
vel_vecs_pi4 = (t_val_start_pi4 , vel_end_pi4)
vel_arrow_pi4 = Arrow3D(vel_vecs_pi4[0],vel_vecs_pi4[1], vel_vecs_pi4[2], mutation_scale=20, lw=1, arrowstyle="-|>", color="b")
axes.add_artist(vel_arrow_pi4)
Это даст мне ошибку, говоря Tuple out of index