Ну, вам не нужно оценивать бесконечную сумму, потому что как только вы доберетесь до (x-kL) >> 2sigma, вы достигнете пределов точности с плавающей запятой.
Итак, вы должны начать с нахождения минимума x - kL (т. Е. Просто установите x = x mod L и k = 0, законно делать, потому что это бесконечная сумма), а затем добавление членов в k = +/- 1, +/- 2, ... до тех пор, пока вы не достигнете пределов с плавающей запятой. Вот пример кода MATLAB, который иллюстрирует идею - я просто взбивал это, поэтому я не могу обещать, что это ошибка, но похоже, что он демонстрирует некоторые из основных ожидаемых действий.
function [result] = Periodic_Gaussian(x, L, sigma)
gaussian = @(y) 1/(2*pi*sigma)*exp(-y.^2 ./ 4 ./sigma^2);
x = mod(x, L);
oldresult = NaN;
newresult = gaussian(x);
k = 1;
while any(newresult ~= oldresult)
oldresult = newresult;
newresult = oldresult + gaussian(x-k*L) + gaussian(x+k*L);
k = k+1;
end
result = newresult;
Надеюсь, это полезно!
EDIT: Отсутствует коэффициент 4 в знаменателе аргумента экспоненте и обновляется код, чтобы при необходимости взять вектор x.
Этот вопрос касается конкретного языка или инструмента программирования? –
Нет, это не касается какого-либо языка, я задаю вопрос о том, как программно реализовать периодический гауссовский язык на любом языке, сложность заключается в том, как решить задачу суммирования от минус бесконечности до плюс бесконечности. Было бы полезно для меня, если вы можете предоставить ответ в C, Matlab или Python. – user3657953
@ user3657953 Лучше спросите свой вопрос [здесь] (http://stats.stackexchange.com/). – Dalek