我不明白为什么当我将符号设置为实数时diff()
似乎认为它是常数:
>>> t = sympify("x^2")
>>> x = Symbol('x')
>>> diff(t,x)
2*x
>>> x1=Symbol('x',real=True)
>>> diff(t,x1)
0
答案 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拉入,这可能是如果您有许多符号变量,则非常有用。