2

scipy で 1 つの変数だけで複数の変数を持つ関数の定積分を計算しようとしています。これは、私のコードがどのように見えるかのようなものです-

from scipy.integrate import quad
import numpy as np
def integrand(x,y):
    return x*np.exp(x/y)

quad(integrand, 1,2, args=())

そして、このタイプのエラーを返します:

TypeError: integrand() takes exactly 2 arguments (1 given)

ただし、引数に数値を入れると機能します。しかし、y を数値ではなく y のままにしておきたいので、そうしたくありません。これを行う方法を知っている人はいますか?

編集:申し訳ありませんが、私が明確だったとは思わないでください。最終結果を y の関数にしたいのですが、y はまだシンボルのままです。

4

5 に答える 5

0

x(特定の固定値 を指定して定積分を計算することについて話していると仮定しますy。)

ラムダを使用できます:

quad(lambda x:integrand(x, 10), 1, 2, args=())

またはfunctools.partial():

quad(functools.partial(integrand, y=10), 1, 2, args=())
于 2014-08-14T18:13:57.590 に答える
0

あなたができる最善のことは、 functools.partial を使用して、現時点で持っている引数をバインドすることです。しかし、ドメイン全体をまだ指定していない場合、定積分を数値的に積分することは基本的にできません。その場合、結果の式には必然的に記号部分が含まれるため、中間結果は数値ではありません。

于 2014-08-14T18:13:27.437 に答える