用Sympy方程绘制图

MAN*_*624 11 python symbols matplotlib sympy python-3.x

创建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()
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我只计算了该方程的导数,现在我想绘制速度x,所以这相当简单.

Fer*_*dox 17

您可以使用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()
Run Code Online (Sandbox Code Playgroud)

(asmeurerMaxNoe提出的改进)

在此输入图像描述

或者,您可以使用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')
Run Code Online (Sandbox Code Playgroud)

  • 最好使用`lambdify`从sympy表达式创建一个numpy友好表达式而不是使用subs. (2认同)

G M*_*G M 5

使用 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)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

大多数时候它使用 matplotlib 作为后端。