SymPy - 导数


函数的导数是其相对于其中一个变量的瞬时变化率。这相当于求函数在一点的切线的斜率。我们可以使用SymPy包中的diff()函数来求以变量形式存在的数学表达式的微分。

diff(expr, variable)
>>> from sympy import diff, sin, exp 
>>> from sympy.abc import x,y 
>>> expr=x*sin(x*x)+1 >>> expr

上面的代码片段给出了相当于下面表达式的输出 -

$x\sin(x^2) + 1$

>>> diff(expr,x)

上面的代码片段给出了相当于下面表达式的输出 -

$2x^2\cos(x^2) + \sin(x^2)$

>>> diff(exp(x**2),x)

上面的代码片段给出了相当于下面表达式的输出 -

2 ×2 × 2

要获取多重导数,请根据需要多次传递变量以求微分,或在变量后传递一个数字。

>>> diff(x**4,x,3)

上面的代码片段给出了相当于下面表达式的输出 -

$24x$

>>> for i in range(1,4): print (diff(x**4,x,i))

上面的代码片段给出了下面的表达式 -

4*x**3

12*x**2

24*x

也可以调用表达式的 diff() 方法。它的工作原理与 diff() 函数类似。

>>> expr=x*sin(x*x)+1 
>>> expr.diff(x)

上面的代码片段给出了相当于下面表达式的输出 -

$2x^2\cos(x^2) + \sin(x^2)$

未计算的导数是使用 Derivative 类创建的。它与 diff() 函数具有相同的语法。要评估未评估的导数,请使用 doit 方法。

>>> from sympy import Derivative 
>>> d=Derivative(expr) 
>>> d

上面的代码片段给出了相当于下面表达式的输出 -

$\frac{d}{dx}(x\sin(x^2)+1)$

>>> d.doit()

上面的代码片段给出了相当于下面表达式的输出 -

$2x^2\cos(x^2) + \sin(x^2)$