Для больших x даже небольшие изменения в лямбде уже приводят к быстрым колебаниям подынтегральных выражений. В какой-то момент процедура числовой интеграции либо сойдет очень, очень долго, либо не будет учитывать достаточно много точек интеграции, так что вклады от каждой точки интеграции не будут полностью исключены и покажут именно тот шум, который вы видите. Когда я запускаю код, я на самом деле получаю предупреждение от scipy о достижении предела («IntegrationWarning: максимальное количество подразделений (50) было достигнуто».).
Хорошая вещь: вы знаете, что для достаточно большого x интеграция должна идти до нуля. Нет необходимости вычислять его за пределами разумного диапазона.
Пример:
х = 10, мю = 0,635, сигма = 0,01
Границы интегрирования: mu +/- 4sigma = [0,595, 0,675]
2Pi / 0,595 * 10 = 105,6, 2Pi / 0,675 * 10 = 93,08
Это означает примерно два колебания подынтегрального выражения в диапазоне длин волн при x = 10.
х = 100, все остальное тоже самое
Это означает 20 колебаний подынтегральной функции в диапазоне длин волн.
х = 10, мю = 0,635, сигма = 0,1
Границы интегрирования: mu +/- 4sigma = [0,235, 1,035]
2Pi / 0,235 * 10 = 267,37, 2Pi / 1,035 * 10 = 60,71
Это означает 33 колебания подынтегральной функции в диапазоне длин волн уже при x = 10.
х = 100, все остальное тоже самое
Это означает 329 колебаний подынтегральной функции в диапазоне длин волн.
Требуется все больше и больше точек интеграции, если x или sigma становятся большими. Поэтому нет альтернативы увеличению пределов в scipy.integrate для больших x.