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

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

Как это вообще возможно, если для вычисления текущего среднего значения нам нужен ВЕСЬ ряд чисел? Или это не так? Что это за формула такая?
Варианты "ряд на самом деле не бесконечен" или "компьютер реально хранит весь ряд" имеют очевидное объяснение, поэтому пропустим их.
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 02:19 pm (UTC)no subject
Date: 2018-06-06 02:32 pm (UTC)Если он равен 1 (в 10 меньше среднего), то новое среднее: (10 * 1000 + 1) / 1001 = 9.99100899101
Если он равен 100 (в 10 больше среднего), то (10 * 1000 + 100) / 1001 = 10.0899100899
Скакает во 2-м знаке после запятой, а у вас на приборе только 1 знак, да и расход от среднего в 10 раз не гуляет. :)
Чем больше n, тем меньше будет скачок при добавлении значения, сильно отличного от среднего.
Но это всё теоретически. Практически скорее всего 2 счетчика - км. и л. Или счетчик расхода за последние N километров (это правильнее - с увеличением износа двигателя потребление должно плавно расти).
no subject
Date: 2018-06-06 04:17 pm (UTC)no subject
Date: 2018-06-27 04:53 pm (UTC)no subject
Date: 2018-06-06 02:58 pm (UTC)no subject
Date: 2018-06-06 03:16 pm (UTC)no subject
Date: 2018-06-06 04:11 pm (UTC)no subject
Date: 2018-06-06 03:57 pm (UTC)Чем больше времени прошло, тем больше n -- тем с большим "весом" входит предыдущее среднее.
Этим и обеспечивается плавность.
Разумеется, тут играет еще и то, что предыдущее среднее хранится с гораздо большей точностью, чем оно выводится.
То есть он скачет между 27.45678 и 27.45789
а ты видишь только 27.4
no subject
Date: 2018-06-06 04:13 pm (UTC)no subject
Date: 2018-06-06 07:00 pm (UTC)Величина среднего расхода, это не измеренная, а вычисленная величина. Хранится только общий пробег с момента обнуления и общий расход. ВСЁ.
Более совершенные БК используют другие алгоритмы, рассчитывая средний за последние несколько (сотен) часов или километров. Там приходится производить чуть больше действий, чем суммирование и деление, но тоже невелика сложность - раз в n метров ( n секунд) отнимать от величины израсходованного топлива вычисленное ранее среднее значение и добавлять к величине реальное количество израсходованного за этот период топлива.
no subject
Date: 2018-06-06 02:20 pm (UTC)no subject
Date: 2018-06-06 02:24 pm (UTC)no subject
Date: 2018-06-06 09:27 pm (UTC)no subject
Date: 2018-06-07 11:29 am (UTC)и потом считает avg = N_litr*100 / (km_new - km_old)