¿Cuál es la mejor manera de crear una ecuación de Sympy, hacer algo como tomar la derivada y luego trazar los resultados de esa ecuación?
Tengo mi ecuación simbólica, pero no puedo entender cómo hacer una matriz de valores para trazar. Aquí está mi código:
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()
En mi caso, solo calculé la derivada de esa ecuación, y ahora quiero trazar la velocidad x
, así que esto está bastante simplificado.
Puede usar numpy.linspace()
para crear los valores del eje x ( x_vals
en el código a continuación) y 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()
(mejoras sugeridas por asmeurer y MaxNoe )
Alternativamente, puedes usar la plot()
de sympy plot()
:
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')
Puedes usar directamente las funciones de trazado 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 mayoría de las veces usa matplotlib como backend.