erfメソッドを使用せずに、scipyを使ってエラー関数を再現しようとしています。quadメソッドのpythonを使った統合
これは私のコードです:
#!/usr/bin/env python
import numpy as np
import math
from scipy.integrate import quad
def error_func(y):
return 2/math.sqrt(np.pi)*quad(np.exp(-y**2), 1, np.inf, args=(y))[0]
g = [error_func(x) for x in np.arange(-1,1,0.2)]
print g
このコードは、次のエラーメッセージが返されます:
File "./test.py", line 9, in <module>
g = [error_func(x) for x in np.arange(-1,1,0.2)]
File "./test.py", line 7, in error_func
return 2/math.sqrt(np.pi)*quad(np.exp(-y**2), 1, np.inf, args=(y))[0]
File "/usr/local/lib/python2.7/site-packages/scipy/integrate/quadpack.py", line 316, in quad
points)
File "/usr/local/lib/python2.7/site-packages/scipy/integrate/quadpack.py", line 383, in _quad
return _quadpack._qagie(func,bound,infbounds,args,full_output,epsabs,epsrel,limit)
quadpack.error: quad: first argument is not callable
を私が正しく理解していれば、クワッドの最初の引数は関数でなければなりません。私はそれを正しく伝えます。 私のコードで何が問題になっていますか?
投稿したコードは、スタックトレースのコードとははっきりと異なっています。スタックトレースのコードには 'lambda y'はありません。あなたが思っているコードを実行していることを確認してください。 – user2357112
あなたの投稿を編集したのを見ましたが、あなたのコードはまだ目に見えてスタックトレースと一致していないので、私が指摘した部分をただちに修正しようとしました。それをしないでください。コードを実行してエラーメッセージを表示し、実行したコードと正確なエラーメッセージをコピーして質問に貼り付けます。他のものはバグを隠し、他のバグを導入し、一般的に誰かがあなたを助けることをより困難にします。 – user2357112
'scipy.integrate.quad'は関数を最初の引数として想定しています。あなたはそれを 'np.exp(-y ** 2)'とします。これは数字です。 'lambda x:np.exp(-x ** 2)'と置き換えてみてください。また、 'scipy.integrate.quad'の文書を読んでください:https://docs.scipy.org/doc/scipy-0.18.1/reference/generated/scipy.integrate.quad.html –