Python SymPy计算余弦函数积分时出现错误。

5
我尝试了 sympy 文档中的一个例子,但是出现了奇怪的错误。我使用的是 python 3.2 和 sympy 0.7.3。我一直在 ipython notebook 中工作,但我不认为这会有任何影响。错误是,每当我创建一个“x”符号并尝试积分 math.cos(x) 时,就会出现一个错误,指出“无法将表达式转换为浮点数”。
以下是代码示例。这是从 sympy documentation 中摘取的。
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

任何建议都将不胜感激。

1
尝试使用 sympy.expsympy.cos 代替 math.expmath.cos - Mark Dickinson
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库中的对象可以重载运算符,例如*+-等,因此您可以在表达式中使用它们,但您不能使用直接计算值的普通函数。


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