Quel est le meilleur moyen de créer une équation de Sympy, de faire quelque chose comme prendre la dérivée, puis de tracer les résultats de cette équation?
J'ai mon équation symbolique, mais je ne peux pas comprendre comment créer un tableau de valeurs pour le traçage. Voici mon code:
from sympy import symbols
import matplotlib.pyplot as mpl
t = symbols('t')
x = 0.05*t + 0.2/((t - 5)**2 + 2)
nums = []
for i in range(1000):
nums.append(t)
t += 0.02
plotted = [x for t in nums]
mpl.plot(plotted)
mpl.ylabel("Speed")
mpl.show()
Dans mon cas, je viens de calculer la dérivée de cette équation, et maintenant je veux tracer la vitesse x
, donc c'est assez simplifié.
Vous pouvez utiliser numpy.linspace()
pour créer les valeurs de l'axe x (x_vals
dans le code ci-dessous) et lambdify()
.
from sympy import symbols
from numpy import linspace
from sympy import lambdify
import matplotlib.pyplot as mpl
t = symbols('t')
x = 0.05*t + 0.2/((t - 5)**2 + 2)
lam_x = lambdify(t, x, modules=['numpy'])
x_vals = linspace(0, 10, 100)
y_vals = lam_x(x_vals)
mpl.plot(x_vals, y_vals)
mpl.ylabel("Speed")
mpl.show()
(améliorations suggérées par asmeurer et MaxNoe )
Vous pouvez également utiliser la fonction plot()
de sympy:
from sympy import symbols
from sympy import plot
t = symbols('t')
x = 0.05*t + 0.2/((t - 5)**2 + 2)
plot(x, (t, 0, 10), ylabel='Speed')
Vous pouvez utiliser directement les fonctions de traçage de SymPy :
from sympy import symbols
from sympy.plotting import plot as symplot
t = symbols('t')
x = 0.05*t + 0.2/((t - 5)**2 + 2)
symplot(x)
La plupart du temps, il utilise matplotlib comme back-end.