SymPy diff()在将符号设置为实数时给出了错误的结果

3

我不明白为什么当我将符号设置为实数时,diff()似乎将其视为常数:

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

3
问题在于变量 xt 中和变量 x1 并非相同,这是由于 x1 的 "real" 属性导致的。因此,在微分中,x1 变量被视为常数,从而得出 0
如果您打算使用实数变量,则可以使用实数变量 x 定义您的表达式以解决此问题。
>>> x = Symbol('x', real=True)
>>> t = sympify('x^2', locals={'x': x})
>>> diff(t, x)
2*x

不必使用 locals 关键字参数显式地传递一个字典,你也可以直接调用 locals() 并使用 locals=locals() 将整个本地符号表作为字典引入,这在你有很多符号变量时可能会非常有用。


在 sympify 中,您还可以编写 locals=locals() 以引入所有本地变量,包括 x - asmeurer
@asmeurer 值得注意,可能会使事情变得更容易。我可以把它加入我的答案吗? - miradulo
可以的,请直接修改自己的回答,不需要再次请求许可。 - asmeurer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接