scipy.integrate.quad를 사용하여 매우 큰 범위 (0..10,000)에 함수를 통합하려고합니다. 이 함수는 대부분의 범위에서 0이지만 매우 작은 범위 (예 : 1,602..1,618)의 스파이크를가집니다.Python + Scipy + Integration : 스파이크가있는 함수의 정밀도 오류 처리
통합 할 때 나는 출력이 양의 값이 될 것으로 기대하지만 쿼드의 추측 알고리즘은 혼란스러워서 제로를 출력한다고 생각합니다. 제가 알고 싶은 것은,이를 극복 할 수있는 방법이 있습니까 (예 : 다른 알고리즘, 다른 매개 변수 등을 사용하는 것)? 나는 보통 스파이크가 어디로 가게 될지 알지 못한다. 그래서 나는 누군가가 그것을하는 법에 대해 좋은 아이디어가 없다면, 통합 범위를 나누고 그 부분들을 합산 할 수 없다.
감사합니다.
샘플 출력 : 당신은 같은 integrate.romberg()
방법으로 다른 통합 방법을 시도 할 수도
>>>scipy.integrate.quad(weighted_ftag_2, 0, 10000)
(0.0, 0.0)
>>>scipy.integrate.quad(weighted_ftag_2, 0, 1602)
(0.0, 0.0)
>>>scipy.integrate.quad(weighted_ftag_2, 1602, 1618)
(3.2710994652983256, 3.6297354011338712e-014)
>>>scipy.integrate.quad(weighted_ftag_2, 1618, 10000)
(0.0, 0.0)