2017-11-09 9 views
0

이 함수는 0에서 inf 사이에서 양수입니다. 1000보다 큰 값을주는 것이 0이 아닌 이유는 합리적이지 않습니다.integrate.quad (lambda x : x * exp (-x ** 2/2)/sqrt (2 * pi), 0.0, 100000)가 왜 0입니까?

import scipy.integrate as integrate 
from math import * 

integrate.quad(lambda x: x*exp(-x**2/2)/sqrt(2*pi), 0.0, 1000) 
Out[52]: 
(0.3989422804014328, 1.6471510195390376e-11) 
integrate.quad(lambda x: x*exp(-x**2/2)/sqrt(2*pi), 0.0, 100000) 
Out[54]: 
(0.0, 0.0) 

답변

3

약 x보다 큼. 39, exp(-x**2/2)은 0.0을 제공합니다. 적분의 상한이 100000 일 때, 함수가 0이 아닌 적분 구간의 분율은 너무 작아서 알고리즘이 결코 그것을 보지 못합니다. 지금까지 quad까지는 기능이 동일합니다.

+0

해결 방법이 있습니까? – Pythoner

+0

일반적으로 임의의 함수에 대해 수정 했습니까? 나는 방법을 모른다. 'quad' (또는 어떤 수치 적분 알고리즘)를 효과적으로 사용하는 함수의 동작에 대해 조금 알아야합니다. 이 특정 함수에 대해 문제를 해결하려면 'quad'대신에 적분에 대한 분석 식을 사용하면됩니다. –