web-dev-qa-db-ja.com

Sympy方程式を使用したプロット

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をプロットしたいので、これはかなり単純化されています。

12
MANA624

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 によって提案された改善)

enter image description here

または、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')
_
17
Fermi paradox

SymPyの使用

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)

enter image description here

ほとんどの場合、バックエンドとしてmatplotlibを使用します。

0
G M