5

SymPy では、不定積分に制限を適用して評価することは可能ですか?

import sympy
from sympy.abc import theta

y = sympy.sin(theta)

Y_indef = sympy.Integral(y)
Y_def = sympy.Integral(y, (theta, 0, sympy.pi / 2))

Y_def.evalf()数を生成します。

Y_indef.evalf((theta, 0, sympy.pi/2))同じ答えが得られるようなものを探しています。

4

1 に答える 1

7

直接的な方法はわかりませんがY_indef、定積分を作成するために情報を抽出できます。

>>> indef = Integral(x)
>>> to_be_integrated, (free_var,) = indef.args
>>> definite = Integral(to_be_integrated, (free_var, 1, 2))

.argsほとんどの SymPy オブジェクトを構築するために必要なものを含む一般的な属性です。

編集:質問へのコメントに対処します。

  1. SymPy は、定積分の評価に成功すると同時に、不定積分の解決に失敗する場合があります。これは、定積分に適用される追加のアルゴリズムが存在するためです。

  2. 定積分と不定積分はどちらも同じクラスのインスタンスです。唯一の違いは、.args. IntegralSymPy はほとんどの場合、積分を解くことができないことを示すフラグとして使用する (つまり、実装されたアルゴリズムがすべて失敗したときにintegrate関数が戻る) ことを考えると、異なるクラスの必要性はまだ感じられません。Integral

于 2013-02-07T22:33:50.610 に答える