5

因此,我直接从 sympy 文档中尝试了一个示例,但遇到了一个奇怪的错误。我正在使用带有 sympy 0.7.3 的 python 3.2。我一直在 ipython 笔记本上工作,但我认为这不会有什么不同。错误是每当我创建一个“x”符号并尝试整合 math.cos(x) 时,我都会收到一条错误消息,提示“无法将表达式转换为浮点数”。

这是一个代码示例。这取自sympy 文档

import sympy
import math
x = sympy.Symbol('x')
sympy.integrate(x**2 * math.exp(x) * math.cos(x), x)

结果的错误消息是:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-123-84e55454fb60> in <module>()
----> 1 sympy.integrate(x**2 * math.exp(x) * math.cos(x), x)

/usr/local/lib/python3.2/dist-packages/sympy/core/expr.py in __float__(self)
242         if result.is_number and result.as_real_imag()[1]:
243             raise TypeError("can't convert complex to float")
--> 244         raise TypeError("can't convert expression to float")
245 
246     def __complex__(self):

TypeError: can't convert expression to float

任何建议,将不胜感激。

4

1 回答 1

7

您不能将sympy库创建的符号数学表达式与仅计算值的普通函数(如math库中的函数)混合使用。如果您正在创建符号表达式,则应始终使用sympy函数(sympy.expsympy.cossympy.log等):

x = sympy.Symbol('x')
sympy.integrate(x**2 * sympy.exp(x) * sympy.cos(x), x)

诸如*, +, -... 之类的运算符被库中的对象重载,sympy因此您可以在表达式中使用它们,但不能使用直接计算值的普通函数。

于 2013-08-16T17:26:27.053 回答