每当我将符号设置为实数时,Sympy diff()会给出错误的结果

时间:2017-02-26 18:18:45

标签: python sympy

我不明白为什么当我将符号设置为实数时diff()似乎认为它是常数:

>>> t = sympify("x^2")
>>> x = Symbol('x')
>>> diff(t,x)
2*x
>>> x1=Symbol('x',real=True)
>>> diff(t,x1)
0

1 个答案:

答案 0 :(得分:3)

问题在于x中变量t和变量x1 被认为是相同的,因为"真实&# 34; x1的属性。因此,在区分中,x1变量被视为常数,产生0

要解决此问题,如果您打算使用实变量,可以使用实变量x定义表达式。

>>> x = Symbol('x', real=True)
>>> t = sympify('x^2', locals={'x': x})
>>> diff(t, x)
2*x

除了使用locals关键字参数传递显式dict之外,您还可以使用locals=locals()调用locals()来将所有整个本地符号表作为dict拉入,这可能是如果您有许多符号变量,则非常有用。