Бесконечный ряд среднего значения
Jun. 6th, 2018 07:53 pmЯ понимаю, что это скорее к математикам, но там сообщество закрытое и полуживое.
Бортовой компьютер автомобиля непрерывно вычисляет средний расход топлива, пока его не обнулишь. Значение может считаться много лет, если не сбрасывать и не скидывать клемму с аккума.

Как это вообще возможно, если для вычисления текущего среднего значения нам нужен ВЕСЬ ряд чисел? Или это не так? Что это за формула такая?
Варианты "ряд на самом деле не бесконечен" или "компьютер реально хранит весь ряд" имеют очевидное объяснение, поэтому пропустим их.
Бортовой компьютер автомобиля непрерывно вычисляет средний расход топлива, пока его не обнулишь. Значение может считаться много лет, если не сбрасывать и не скидывать клемму с аккума.

Как это вообще возможно, если для вычисления текущего среднего значения нам нужен ВЕСЬ ряд чисел? Или это не так? Что это за формула такая?
Варианты "ряд на самом деле не бесконечен" или "компьютер реально хранит весь ряд" имеют очевидное объяснение, поэтому пропустим их.
no subject
Date: 2018-06-06 01:23 pm (UTC)no subject
Date: 2018-06-06 01:23 pm (UTC)no subject
Date: 2018-06-06 01:25 pm (UTC)no subject
Date: 2018-06-06 01:30 pm (UTC)no subject
Date: 2018-06-06 01:31 pm (UTC)no subject
Date: 2018-06-06 01:33 pm (UTC)float в С++, на котором скорее всего все написано. Хватит для варианта "два тупых счетчика".
вопрос точности или не поднимался разработчиком, или как написали выше, не критичен с увеличением пробега.
можно еще баловаться среднесуточными, или средним на 100 или 1000 км, храня их зачем то в целых.
а потом их уже усреднять. была бы задача поставлена:)
no subject
Date: 2018-06-06 01:35 pm (UTC)Так же можно считать и менее серьёзными квантами, хоть по 10 метров.
no subject
Date: 2018-06-06 01:39 pm (UTC)И где это значение можно использовать с пользой?
no subject
Date: 2018-06-06 01:44 pm (UTC)// Returns the new average after including x static float getAvg(float prev_avg, float x, int n) { return (prev_avg * n + x) / (n + 1); }Реально, конечно, 2 счетчика - километраж и расход.
no subject
Date: 2018-06-06 01:45 pm (UTC)no subject
Date: 2018-06-06 01:45 pm (UTC)для сглаживания кривой можно держать в памяти, например, 100 последних средних значений. и сдвигать ряд, запоминая новое среднее вместо самого старого.
no subject
Date: 2018-06-06 01:48 pm (UTC)floating_avg = floating_avg_prev * k + current_avg * (1-k)
no subject
Date: 2018-06-06 01:49 pm (UTC)можно хранить готовые средние значения по каждой поездке (или за сутки). это уже будет не миллион, а не больше 500 значений в год.
думаю, так и происходит. в конце поездки вычисляется среднее, которое потом хранится.
и вполне можно автоматичски раз в месяц укрупнять показатель, усредняя значения из архива. так можно хранить 100 значений за послденмй месяц и всего 12 значений за прошлый год.
no subject
Date: 2018-06-06 01:53 pm (UTC)no subject
Date: 2018-06-06 01:57 pm (UTC)no subject
Date: 2018-06-06 02:08 pm (UTC)no subject
Date: 2018-06-06 02:09 pm (UTC)no subject
Date: 2018-06-06 02:10 pm (UTC)no subject
Date: 2018-06-06 02:12 pm (UTC)no subject
Date: 2018-06-06 02:16 pm (UTC)no subject
Date: 2018-06-06 02:16 pm (UTC)no subject
Date: 2018-06-06 02:19 pm (UTC)Более того, я уверен, что там хранятся данные за N < 10000 последних километров пробега и среднее за все предыдущие.
no subject
Date: 2018-06-06 02:19 pm (UTC)no subject
Date: 2018-06-06 02:19 pm (UTC)no subject
Date: 2018-06-06 02:20 pm (UTC)