1
私はsympyを使ってsin(b * x)のような特定の関数を持っていますが、微分と逆畳み込みの式がありますが、これらの3つの関数をmatplotlibにプロットする必要があります。私の問題はmatplotlibでプロットするために関数をnumpyに正しく変換できないことです。私はlambify関数sympyページのドキュメントに従っているが動作しません。sympl関数をmatplotlibでプロットする方法は?
from sympy import Symbol, diff, integrate, sin, cos, Function
from sympy.utilities.lambdify import lambdify, implemented_function
from sympy.abc import x
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider, Button, RadioButtons
def signal(b,x):
return sin(b*x)
def derivative(b,x):
yprime = diff(signal(b,x), x)
return yprime
def antiderivative(b,x):
anti = integrate(signal(b,x), x)
return anti
b = 5
evalfunc = lambdify((b,x), signal(b,x), modules=['numpy'])
evalderiv = lambdify((b,x), derivative(b,x), modules=['numpy'])
evalantideriv = lambdify((b,x), antiderivative(b,x), modules=['numpy'])
axis_color = 'lightgoldenrodyellow'
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
fig.subplots_adjust(left=0.25, bottom=0.25)
t = np.arange(-10, 10, 0.001)
[line] = ax.plot(t, evalfunc(b,t), linewidth=2, color='red')
[line2] = ax.plot(t, evalderiv(b,t), linewidth=2, color='blue')
[line3] = ax.plot(t, evalantideriv(b,t), linewidth=2, color='blue')
ax.set_xlim([-10, 10])
ax.set_ylim([-5, 5])
ax.grid()
plt.show()
それはax.plotとValueErrorに失敗します:http://docs.sympy.org/latest/modules/utilities/lambdify.html
私はこのコードを持っているシーケンスが大きすぎます。 32より大きくすることはできません
あなた 'evalfunc'定義し、次の2行はsympy 1.0に私のためにエラーを上げ、MPL 2.0.0、1.12.1 numpyの。前の行で 'b'を整数に設定しているからです。これらのどのバージョンを実行していますか? – saintsfan342000
私はキャノピーを使用しています。私はNumpy 1.11.3-3 mpl 2.0.0-3 sympy 1.0-2を持っています。私はb = Symbol( 'b')のようにbを使ってみましたが、AttributeErrorがあります: 'Mul'オブジェクトにax.plotの属性 'sin'がありません – Reyjhonny