我使用Sympy来计算衍生物和其他一些东西。我尝试计算"e**x + x + 1"
的导数,并返回e**x*log(e) + 1
作为结果,但据我所知,正确的结果应为e**x + 1
。这里发生了什么?
完整代码:
from sympy import *
from sympy.parsing.sympy_parser import parse_expr
x = symbols("x")
_fOfX = "e**x + x + 1"
sympyFunction = parse_expr(_fOfX)
dSeconda = diff(sympyFunction,x,1)
print(dSeconda)
答案 0 :(得分:1)
答案正确包括log(e),因为你从未指定“e”是什么。它只是一个像“a”或“b”的字母。
Euler编号2.71828 ...在SymPy中表示为E.但通常情况下,写exp(x)
更可取,因为符号是明确的,也是因为SymPy无论如何都要返回exp(x)
。例子:
>>> fx = E**x + x + 1
>>> diff(fx, x, 1)
exp(x) + 1
或使用exp表示法:
>>> fx = exp(x) + x + 1
>>> diff(fx, x, 1)
exp(x) + 1
通过解析字符串来避免创建表达式,除非您确实需要并知道为什么需要它。