Sympy方程式を作成し、導関数を取得して、その方程式の結果をプロットするための最良の方法は何ですか?
シンボリック方程式がありますが、プロットする値の配列を作成する方法がわかりません。これが私のコードです:
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()
私の場合、その方程式の導関数を計算しただけなので、速度x
をプロットしたいので、これはかなり単純化されています。
numpy.linspace()
を使用して、x軸の値を作成できます(以下のコードでは_x_vals
_)および 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()
_
( asmeurer および MaxNoe によって提案された改善)
または、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')
_
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)
ほとんどの場合、バックエンドとしてmatplotlibを使用します。