#math
#математика
Вопрос:
Предположим, у меня есть ряд t_1, t_2, …, t_n, …, и число всегда приходит. Я хочу вычислить приблизительное значение суммы / среднего значения последних t чисел, но без сохранения этих t чисел. Единственное, что сохраняется, это предыдущая сумма / среднее значение. Какова соответствующая функция?
Например.
s_1 = t_1
s_2 = f(t_2, s_1)
s_3 = f(t_3, s_2)
Возможная функция может быть похожа на s_2 = t_2 s_1 * (e ^ -1), но каково оптимальное решение?
Примечание: размер окна фиксирован. Таким образом, точного решения нет, а есть приближение, поскольку число из окна неизвестно.
Примечание 2: Спасибо за все обсуждения. Теперь я знаю ответ. Это действительно тривиально, я не думаю, что это хорошо. Я удалю этот вопрос позже. Но в любом случае, ответ таков: я должен предположить, что число из окна является средним. В этом предположении новая сумма равна
(old average)*(t-1) new number
и новое среднее значение равно
((old average)*(t-1) (new number))/t
Комментарии:
1. Можете ли вы отслеживать, сколько чисел поступило до сих пор?
2. Возможно, вопрос о домашнем задании?
3. @asimes Да, вы можете, поскольку хранилище равно O (1)
4. @Tony Сохраняйте текущую сумму и количество элементов — все, что требуется, — это два числа
5. @Ed Heal, нет, это не домашнее задание.
Ответ №1:
Прежде всего, это реально, вероятно, вопрос для Mathematics Stack Exchange
но в любом случае, поскольку вы не упоминаете язык программирования, я пойду с C # (с массивом). давайте назовем вашу серию ‘mySeries’:
double average=0;
for (int i = 0; i < mySeries.Length; i )
average =mySeries[i]/(i 1);
MessageBox.Show("Here is your average dawg:" average.ToString());