用Sympy方程绘制图

时间:2016-02-14 09:20:14

标签: python python-3.x matplotlib symbols 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,所以这相当简单。

2 个答案:

答案 0 :(得分:14)

您可以使用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()

asmeurerMaxNoe建议的改进)

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')

答案 1 :(得分:0)

使用SymPy

您可以直接使用plotting functions of SymPy

for key in dictionary:
    print(key)
    if key in answer_string:
        pattern = re.compile(r"[^ ]*"+key+r"[^ ]*", re.IGNORECASE)
        answer_string = pattern.sub("<a href=\"" + dictionary.get(key) + "\">" + key + "</a>", answer_string)

enter image description here

大多数情况下,它使用matplotlib作为后端。