|
|
|
cardinal |
|
|||
Инженер Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
То есть как бы цикл, в нем надо каждый раз получая новое число считать среднее арифметическое с учетом это числа
То есть на примере: ср. ариф. чисел 2, 5, 8, 14 равно 29/4 = 7.25 а как посчитать это имея 2 потом 5 (ср. ариф. равно 3.5) потом 8 (ср. ариф. равно 5) потом 14 (см. выше) Вот сейчас пишу и думаю, а не самый ли просто вариант считать так: ((((((2)/1+5)/2)+8)/2)+14)/2 = 9.875 Как бы получается примерное среднее арифметическое... Какие есть мысли? -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
maxim1000 |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
может, и простой, но неправильный более поздние значения будут иметь бОльший вес (на самом деле, иногда это - именно то, что нужно, но среднее арифметическое - несколько другое) чтобы получить настоящее среднее арифметическое, нужно на каждом шаге считать взвешенное среднее: s[n]=( (n-1)*s[n-1]+1*x[n] )/n -------------------- qqq |
|||
|
||||
cardinal |
|
|||
Инженер Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
s[n]=( (n-1)*s[n-1]+1*x[n] )/n
x[1] = 2 x[2] = 5 x[3] = 8 x[4] =14 s[1] = x[1]/1 = 2 s[2] = (s[1] + x[2])/2 = (2 + 5) / 2 = 3.5 s[3] = (2*s[2]+x[3])/3 = (2*3.5 + 8)/3 = 5 s[4] = (3*s[3]+x[4])/4 = (3*5 + 14)/4 = 7.25 ... Вывод: именно это и искал... Спасибо! Кстати доказывается просто. Можно было и самому додумать... s[1] = x[1] s[2] = (x[1] + x[2])/2 s[3] = (x[1] + x[2] + x[3])/3 = (2 * (x[1] + x[2])/2 + x[3])/3 = (2 * s[2] + x[3])/3 ... s[n] = ((n-1)*s[n-1] + x[n]) / n -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
maxim1000 |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
кстати, можно ещё немного переделать:
s[n]=s[n-1]+(x[n]-s[n-1])/n есть подозрения, что эффекты погрешностей вычислений будут меньше... -------------------- qqq |
|||
|
||||
cardinal |
|
|||
Инженер Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
Ну то есть скобки раскрыть. Насчет погрешностей не знаю, но то что вместо умножения и деления остается одно деление - это факт. Это мне нравится. Спасибо! -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
Earnest |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 7 Всего: 183 |
Такая задача часто возникает, когда жаба давит каждый раз, при добавлении данных, среднее (или другую статистику) пересчитывать. Я обычно пишу маленький классик с методами Add и Get.
Он данные накапливает (т.е. суммирует) и хранит еще число объектов. А по запросу выдает текущее среднее. Можно легко на случай с весами расширить и т.д. -------------------- ... |
|||
|
||||
cardinal |
|
|||
Инженер Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
Кому "жаба давит", а кто программирует мк, которые работают на гораздо меньшей частота чем PC и памяти у которых гораздо меньше. Вот и думаешь как бы что получше сделать.
Сделал я в итоге правда проще. Брал последнии 4 значения, складывал и делил на 4. Просто и понятно... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
scalosale |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 8.2.2023 Репутация: нет Всего: нет |
Модератор: Сообщение скрыто. |
|||
|
||||
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |