Python 如何用SymPy计算具有指数的单变量函数?
我试图使用symphy来计算一些表达式,但有时,单独使用Python 如何用SymPy计算具有指数的单变量函数?,python,python-3.x,sympy,Python,Python 3.x,Sympy,我试图使用symphy来计算一些表达式,但有时,单独使用.subs()函数,或后跟.evalf(),不会给出任何浮点值或整数值 ##--IMPORT from mpmath import * from sympy import * from sympy.parsing.sympy_parser import parse_expr x = symbols("x") _fOfX = "e**x + x + 1" if __name__== "__main__": #Function t
.subs()
函数,或后跟.evalf()
,不会给出任何浮点值或整数值
##--IMPORT
from mpmath import *
from sympy import *
from sympy.parsing.sympy_parser import parse_expr
x = symbols("x")
_fOfX = "e**x + x + 1"
if __name__== "__main__":
#Function to sympy expression
_sympyFunction = sympify(_fOfX)
#Calcolo la derivata prima
_dPrima = diff(_sympyFunction,x,1)
_dPrima = _dPrima.subs(x,5)
print(_dPrima.evalf())
对于那些想知道的人来说,是的,我需要解析一个字符串来获得函数。问题是,sympy不会将
e
解释为exp(1)
,而是将e
作为符号,就像它将x
视为x
一样。如果你想让sympy理解你想要的东西,你可以写exp(1)
int而不是e
请参见下面的示例,了解Symphy如何解释string1和string2
import sympy as sym
string1 = "e"
string2 = "exp(1)"
sym_string1 = sym.sympify(string1)
sym_string2 = sym.sympify(string2)
print(type(sym_string1))
print(type(sym_string2))
e = sym.symbols('e')
print(type(sym_string1.subs(e, sym.exp(1))))
因此,您可以用exp(1)
替换字符串中的e
,或者稍后替换它。例如,您的代码可能如下所示:
from mpmath import *
from sympy import *
from sympy.parsing.sympy_parser import parse_expr
x = symbols("x")
_fOfX = "e**x + x + 1"
if __name__== "__main__":
#Function to sympy expression
_sympyFunction = sympify(_fOfX)
#Calcolo la derivata prima
_dPrima = diff(_sympyFunction,x,1)
_dPrima = _dPrima.subs(x,5)
#Replace e with exp(1)
e = symbols('e')
_dPrima = _dPrima.subs(e, exp(1))
print(_dPrima.evalf())
e的定义不应该包含在“从mpath导入*”中吗?它确实被导入了,但sympy应该如何知道它呢?Sympy无法处理您导入的所有其他软件包,因为有太多甚至不兼容的软件包。所以它只使用它自己和它自己的定义。务必小心使用
import*
。想象一下,您还可以从numpy import*获得。然后,您将得到e
的两个独立(从技术角度来看是不同的)定义。