5

そのため、sympy ドキュメントから直接例を試していたところ、奇妙なエラーが発生しました。私はsympy 0.7.3でpython 3.2を使用しています。私は ipython ノートブックで作業してきましたが、違いはないと思います。エラーは、「x」記号を作成して math.cos(x) を統合しようとすると、「式を float に変換できません」というエラーが表示されることです。

コード例を次に示します。これは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

任意の提案をいただければ幸いです。

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 に答える