Sympy:导数和子

pan*_*ank 4 python sympy python-3.x

我有以下代码:

from sympy import *
x = Symbol("x")
f = Function("f")(x)
diff(3*x + 2, x) # == 3
diff(f, x).subs(f, 3*x + 2) # == Derivative(3*x + 2, x) <- Why not 3?
Run Code Online (Sandbox Code Playgroud)

为什么sympy不求我的时候取代了表达f与表达x

L3v*_*han 6

diff(f, x)尚无法派生该函数,因此得出抽象Derivative(f(x), x)。换人没有做任何评价,所以替换f3*x + 2在结果Derivative(3*x + 2, x)。如果要评估它,只需追加doit()

>>> diff(f, x).subs(f, 3*x + 2).doit()
3
Run Code Online (Sandbox Code Playgroud)