python/scipyを使用して2つの制限の間の積分を計算しようとしています。Scipyとの統合で、負の下限値で不正確な結果が返される
オンライン計算機を使用して結果を再確認しています(http://www.wolframalpha.com/widgets/view.jsp?id=8c7e046ce6f4d030f0b386ea5c17b16a、http://www.integral-calculator.com/)。特定の制限が設定されていると私の結果には不一致があります。
使用されるコードは次のとおりです。
import scipy as sp
import numpy as np
def integrand(x):
return np.exp(-0.5*x**2)
def int_test(a,b):
# a and b are the lower and upper bounds of the integration
return sp.integrate.quad(integrand,a,b)
に(a、b)は制限を設定する場合(-np.inf、1)私は(2.10894 ...) に同意答えを得るが、私が設定している場合(-np.inf、300)私はゼロの答えを得ます。さらに調査では
使用:
for i in range(50):
print(i,int_test(-np.inf,i))
を私は私= 36で結果がうまくいかないことがわかります。
これを避ける方法があるかどうか疑問に思っていましたか?
おかげで、
マット
いくつかの提案された解決策を用いて同様の質問が検討されました(http://stackoverflow.com/questions/39515582/scipy-integrate-quad-precision-on-big-numbers/39517294#39517294)。この積分に特に関心があるなら、閉じた形で見つけることができます。あるいは 'np.sqrt(2 * np.pi)*(1-scipy.stats.norm.sf(i))' – Stelios