如何使用 Jupyter Nootebook 中的 Sympy 定义方程、微分和绘制方程?

How is it possible to define a equation, differentiate and plot it, using Sympy in Jupyter Nootebook?

我想在 Jupyter Notebook 中定义一个方程,微分并绘制方程。

import sympy as sp
from IPython.display import display
sp.init_printing()
import matplotlib.pyplot as plt
import numpy as np

x = sp.symbols('x')

def func(x):
    a= sp.sympify("4/5")
    return (x**3+a*x**2)
display(func(x))

def dfunc(x):
    a = sp.diff(func(x),x)
    return a
display(dfunc(x))


x = np.linspace(-10,10,20)


plt.plot(x,func(x))
plt.plot(x,dfunc(x))      # doesn't work

display(dfunc(x)) 显示了想要的功能,但 plt.plot(x,dfunc(x)) returns 错误消息 ValueError: cannot derive by this array

有谁知道剧情怎么弄的吗?

(它也不适用于 sp.integrate(func(x),x) 而不是 sp.diff(func(x),x)。只返回另一条错误消息 ValueError: Invalid limits given: ...

非常感谢。

马蒂亚斯

您可以使用 SymPy plot 函数而不是 matplotlib 函数。 matplotlib plot 函数需要数组作为输入,而 sympy 函数接受 sympy 表达式(然后计算值以为 matplotlib 创建数组):

In [36]: import sympy as sym

In [37]: a = sym.Rational(4, 5)

In [38]: x = sym.Symbol('x')

In [39]: f = x**3 + a*x**2

In [40]: f
Out[40]: 
        2
 3   4⋅x 
x  + ────
      5  

In [41]: f.diff(x)
Out[41]: 
   2   8⋅x
3⋅x  + ───
        5 

In [42]: sym.plot(f.diff(x))