2017-05-31 12 views
1

diffは多項式で動作しますが、diff(sin(x)、x)はエラーメッセージを出します。 コードから「from math import *」を削除したところ、diff(sin(x)、x)が働いていました。それはなぜです?三角関数の象徴的な区別で「数学」がクラッシュするのは何ですか?sympyを使って微分関数を定義する

+3

sympyの引数のうち、 'diff'のような引数がSympyオブジェクトであることを確認してください。特に、「sin」はsinの* Sympyバージョン*でなければなりません。つまり、正しい使用法は 'sympy.diff(sympy.sin(x))'です。このような問題を避けるには、 'import *'を使ってモジュールをインポートしないことをお勧めします。 – Stelios

+0

ありがとう! sympyバージョンのsinと数学バージョンのsinの違いをまだ理解していません。違いがあることを知ることは、このクラッシュを理解するのに役立ちます。 –

答えて

2

SymPy関数はSymPy関数でのみ機能します。

mathモジュールの関数は、数値関数です。彼らは数値引数(浮動小数点数または整数)を扱う方法しか知りません。彼らにxのような象徴的な表現を与えると、彼らは何をすべきか分からないでしょう。これは、SymPy関数だけが未評価のままにする方法を知っているからです。

対話的に作業していない場合でも、最大で1つのモジュールから操作しない限り、import *を使用しないことをお勧めします。 symPyの関数と式は、mathnumpyなどのモジュールの数値関数と混在しません。

代わりに、あなたは

import sympy as sym 

を実行するというようにsym.sinとを使用することができます。 モジュールに実装されているすべてのモジュールもSymPyに実装されているため、一般に、symPyを使用する場合は、mathモジュールを使用する必要はありません。

関連する問題