我不明白为什么在将符号设置为实数diff()时似乎将其视为常量:
>>> t = sympify("x^2")
>>> x = Symbol('x')
>>> diff(t,x)
2*x
>>> x1=Symbol('x',real=True)
>>> diff(t,x1)
0
解决方法:
问题在于,由于x1的“实数”属性,t中的变量x和变量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,如果您有许多Symbol变量,这可能很有用.