質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1631閲覧

Python の SymPy モジュールの積分における挙動がわからない

touho

総合スコア26

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/09/15 06:41

編集2018/09/15 06:50

Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 11:27:44) [MSC v.1900 64 bit (AMD64)] on win32

windows10

sympy
'1.2'

積分計算で、定数部分がくくりだされない理由がわかりません。

python

1import sympy as sym 2 3i = sym.Symbol("i", real=True) 4a=sym.Symbol("a") 5x=sym.Symbol("x") 6f = sym.Function("f") 7 8oo=sym.oo 9 10func_1 = sym.integrate((x-a)**2*f(x), (x,-oo,oo)) 11 12func_2 = sym.diff(func_1, a) 13 14# func_2=func_2.expand().subs(sym.integrate(2*a*x(i), (i, -oo, oo)),2*a*sym.integrate(x(i), (i, -oo, oo))).subs(sym.integrate(-2*i*x(i), (i, -oo, oo)),-2*sym.integrate(i*x(i), (i, -oo, oo))) 15func_2=func_2.expand() 16 17# func_2=func_2.subs(func_2.args[0],2*a*sym.integrate(x(i), (i, -oo, oo))).subs(func_2.args[1],-2*sym.integrate(i*x(i), (i, -oo, oo))) 18 19 20# func_3 = sym.solve(func_2) 21func_2

結果

Integral(2af(x), (x, -oo, oo)) + Integral(-2xf(x), (x, -oo, oo))

この積分において、2とかaの部分がくくりだされてほしいいわけです。

以下ではうまくいきます。

python

1import sympy as sym 2 3x = sym.Symbol("x") 4f_x = sym.Symbol("f_x") 5t = sym.Symbol("t") 6oo = sym.oo 7e = sym.Symbol("e") 8r = sym.Symbol("r") 9d = sym.Symbol("d") 10 11M_t = sym.integrate(e**(t*x)*f_x, (x, -oo, oo)) 12# mu = sym.integrate(x*f_x, (x, -oo, oo)) 13# target = sym.integrate(((x-mu)/d)**r, (x, -oo, oo)) 14M_t

結果

f_xIntegral(e**(tx), (x, -oo, oo))

なぜ前者ではうまくいかないのか。違いを教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

計算式オブジェクトにdoit()メソッドを適用することでうまくいきました。

上下の違いは「計算式が評価されるかどうか」に違いがあったようです.

つまり、定数のみの式は評価されないが関数を含む式は評価されるということで、今回問題になっていたundefinedFunctionオブジェクトについては関数というよりもむしろ変数に近い処理が適用されているようです。

勉強になりました。

投稿2018/10/07 07:05

touho

総合スコア26

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問