http://siron-nsk.livejournal.com/ ([identity profile] siron-nsk.livejournal.com) wrote in [community profile] engineering_ru2018-06-06 07:53 pm

Бесконечный ряд среднего значения

Я понимаю, что это скорее к математикам, но там сообщество закрытое и полуживое.

Бортовой компьютер автомобиля непрерывно вычисляет средний расход топлива, пока его не обнулишь. Значение может считаться много лет, если не сбрасывать и не скидывать клемму с аккума.



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

[identity profile] gen-shtab.livejournal.com 2018-06-06 01:23 pm (UTC)(link)
Почему это "много лет", когда у ВАГа, например, лишь за последние 100 часов?

[identity profile] tayamarn.livejournal.com 2018-06-06 01:23 pm (UTC)(link)
Достаточно хранить общий километраж и общее количество сожранного топлива; числа, конечно, выходят немалые, но это решаемо, да и с увеличением можно их начинать хранить со всё снижающейся точностью, по большому счету.

[identity profile] vladimir-akinin.livejournal.com 2018-06-06 01:25 pm (UTC)(link)
Отведи под эти числа 8 байт, и не парься с тем, что они выходят большими.

(no subject)

[identity profile] dr-trans.livejournal.com - 2018-06-06 13:30 (UTC) - Expand

(no subject)

[identity profile] eednew.livejournal.com - 2018-06-06 14:10 (UTC) - Expand

(no subject)

[identity profile] dr-trans.livejournal.com - 2018-06-06 14:24 (UTC) - Expand

(no subject)

[personal profile] crower - 2018-06-06 15:18 (UTC) - Expand

(no subject)

[identity profile] aso.livejournal.com - 2018-06-06 18:34 (UTC) - Expand

(no subject)

[identity profile] irnis-fb.livejournal.com - 2018-06-07 09:24 (UTC) - Expand

(no subject)

[identity profile] wormball.livejournal.com - 2018-06-07 10:11 (UTC) - Expand

(no subject)

[identity profile] irnis-fb.livejournal.com - 2018-06-07 10:30 (UTC) - Expand

(no subject)

[identity profile] wormball.livejournal.com - 2018-06-07 10:55 (UTC) - Expand

(no subject)

[identity profile] irnis-fb.livejournal.com - 2018-06-08 09:44 (UTC) - Expand
(deleted comment)

[identity profile] ne-kit-kat.livejournal.com 2018-06-06 01:53 pm (UTC)(link)
а при заправке, по-вашему, машина до каких долей знает солько ей залили?

(no subject)

[identity profile] kaafree.livejournal.com - 2018-06-06 13:57 (UTC) - Expand

(no subject)

[identity profile] yasmax.livejournal.com - 2018-06-06 15:17 (UTC) - Expand

(no subject)

[identity profile] yasmax.livejournal.com - 2018-06-06 15:20 (UTC) - Expand

(no subject)

[identity profile] red-alert22.livejournal.com - 2018-06-06 16:50 (UTC) - Expand
(deleted comment)

[identity profile] dr-trans.livejournal.com 2018-06-06 01:31 pm (UTC)(link)
ага, они еще будут туда Котельниковава всталвять, щас, оно им надо... просто 2 счетчика -- км и л
(deleted comment)

(no subject)

[identity profile] dr-trans.livejournal.com - 2018-06-06 13:45 (UTC) - Expand

(no subject)

[identity profile] dr-trans.livejournal.com - 2018-06-06 13:49 (UTC) - Expand

(no subject)

[identity profile] dr-trans.livejournal.com - 2018-06-06 14:27 (UTC) - Expand

(no subject)

[identity profile] kspshnik.livejournal.com - 2018-06-06 14:19 (UTC) - Expand

(no subject)

[identity profile] relikt-74.livejournal.com - 2018-06-06 14:52 (UTC) - Expand

[identity profile] sullen-ru.livejournal.com 2018-06-06 01:33 pm (UTC)(link)
3.402823466e+38
float в С++, на котором скорее всего все написано. Хватит для варианта "два тупых счетчика".

вопрос точности или не поднимался разработчиком, или как написали выше, не критичен с увеличением пробега.

можно еще баловаться среднесуточными, или средним на 100 или 1000 км, храня их зачем то в целых.
а потом их уже усреднять. была бы задача поставлена:)

[identity profile] aso.livejournal.com 2018-06-06 06:41 pm (UTC)(link)
float в С++, на котором скорее всего все написано. Хватит для варианта "два тупых счетчика".

В таком эмбеде до сих пор местами сидят ещё на какой-нибудь Атмеге8, кокая там float, Вы что?
Да и не подходит fload для такой задачи - он тупо не сможет суммировать мелкие числа с крупными.
Только всякие long long long unsigned здесь пойдут.

(no subject)

[identity profile] klaip.livejournal.com - 2018-06-07 15:46 (UTC) - Expand

(no subject)

[identity profile] alex-avr2.livejournal.com - 2018-06-06 22:17 (UTC) - Expand

(no subject)

[identity profile] aso.livejournal.com - 2018-06-07 17:32 (UTC) - Expand

(no subject)

[identity profile] alex-avr2.livejournal.com - 2018-06-07 20:21 (UTC) - Expand

(no subject)

[identity profile] aso.livejournal.com - 2018-06-08 16:08 (UTC) - Expand

(no subject)

[identity profile] alex-avr2.livejournal.com - 2018-06-08 16:55 (UTC) - Expand

(no subject)

[identity profile] aso.livejournal.com - 2018-06-08 17:54 (UTC) - Expand

[identity profile] ahitech.livejournal.com 2018-06-06 01:35 pm (UTC)(link)
Средний расход за N+1 километр равен расходу за N километров, умноженному на N, плюс изменению в баке за последний километр (он же "суммарная прокачка топливного насоса за время с последнего апдейта"), и всё это разделить на N+1. Все числа несерьёзные, формата double хватит на всю жизнь машины.

Так же можно считать и менее серьёзными квантами, хоть по 10 метров.
Edited 2018-06-06 13:37 (UTC)

[identity profile] aso.livejournal.com 2018-06-06 06:43 pm (UTC)(link)
Ещё один эксперт с флоатом на атмеге.
И счётчикаме на нём...

(no subject)

[identity profile] ahitech.livejournal.com - 2018-06-06 19:07 (UTC) - Expand

(no subject)

[identity profile] aso.livejournal.com - 2018-06-07 18:18 (UTC) - Expand

(no subject)

[identity profile] ahitech.livejournal.com - 2018-06-07 19:34 (UTC) - Expand

(no subject)

[identity profile] aso.livejournal.com - 2018-06-08 17:47 (UTC) - Expand

(no subject)

[identity profile] juray.livejournal.com - 2018-06-09 11:58 (UTC) - Expand

(no subject)

[identity profile] ahitech.livejournal.com - 2018-06-10 08:59 (UTC) - Expand

[identity profile] v-kleschev.livejournal.com 2018-06-06 01:39 pm (UTC)(link)
> Значение может считаться много лет

И где это значение можно использовать с пользой?

[identity profile] oppositus.livejournal.com 2018-06-06 01:45 pm (UTC)(link)
Посмотреть, на сколько километров хватит бензина, и не пора ли уже заправляться.

(no subject)

[identity profile] ivanrak.livejournal.com - 2018-06-07 08:24 (UTC) - Expand

(no subject)

[identity profile] yasmax.livejournal.com - 2018-06-06 15:22 (UTC) - Expand

[identity profile] oppositus.livejournal.com 2018-06-06 01:44 pm (UTC)(link)
Весь ряд чисел не нужен.

    // 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)

[identity profile] oppositus.livejournal.com - 2018-06-06 14:32 (UTC) - Expand

(no subject)

[identity profile] netnet-dada.livejournal.com - 2018-06-27 16:53 (UTC) - Expand

(no subject)

[identity profile] relikt-74.livejournal.com - 2018-06-06 14:58 (UTC) - Expand

(no subject)

[identity profile] relikt-74.livejournal.com - 2018-06-06 16:11 (UTC) - Expand

(no subject)

[identity profile] dlagno.livejournal.com - 2018-06-06 15:57 (UTC) - Expand

(no subject)

[identity profile] boud.livejournal.com - 2018-06-06 19:00 (UTC) - Expand

(no subject)

[identity profile] kspshnik.livejournal.com - 2018-06-06 14:20 (UTC) - Expand

(no subject)

[identity profile] kspshnik.livejournal.com - 2018-06-06 21:27 (UTC) - Expand

(no subject)

[identity profile] ikaktys.livejournal.com - 2018-06-07 11:29 (UTC) - Expand

[identity profile] sasha-kolpakov.livejournal.com 2018-06-06 01:48 pm (UTC)(link)
Можно еще плавающее среднее сделать, типа:
floating_avg = floating_avg_prev * k + current_avg * (1-k)

(no subject)

[identity profile] miutu.livejournal.com - 2018-06-06 14:53 (UTC) - Expand

[identity profile] sacred truth (from livejournal.com) 2018-06-06 02:16 pm (UTC)(link)
средний расход за поездку более полезен, а не за все время.

[identity profile] cae32.livejournal.com 2018-06-06 02:42 pm (UTC)(link)
От производителя зависит. Видел, как на свежезалитом баке расход поднимался до небес типа 30-40 литров, а потом потихоньку падал до разумного.

[identity profile] nusut.livejournal.com 2018-06-06 02:52 pm (UTC)(link)
Не нужен весь ряд чисел. Нужно предыдущее среднее S1 и объём выборки N.
Тогда при получении нового значения V новое среднее S2 = (S1*N + V)/(N + 1)

(no subject)

[identity profile] nusut.livejournal.com - 2018-06-06 15:19 (UTC) - Expand

[identity profile] http://users.livejournal.com/_blib/ 2018-06-06 02:54 pm (UTC)(link)
вообще то легко считается для следующего члена на базе предыдущего

https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#Online_algorithm

[identity profile] troodny.livejournal.com 2018-06-06 02:56 pm (UTC)(link)
Я просто оставлю это здесь.

https://en.wikipedia.org/wiki/RRDtool

[identity profile] aschnurrbart.livejournal.com 2018-06-06 02:57 pm (UTC)(link)
а зачем вам цифры, которые даёт бортовой компьютер?
я заправляюсь до полного бака, езжу, снова заправляюсь до полного бака, прямо на чеке записываю километраж, дома вношу в экселевскую таблицу.

ps. я бы заглянул в инструкцию, наверняка в ней стоит за какой период компьютер расчитывает это самое среднее.

[identity profile] vanderdecken-lj.livejournal.com 2018-06-06 03:14 pm (UTC)(link)
Горе от ума....
Средний расход считается из полного, который комп считает суммируя мгновенный расход, ради расчёта которого комп в авто и появился. Комп не считает расход по изменению объёма топлива в баке, который оценивается весьма и весьма приблизительно

[identity profile] iultinrom.livejournal.com 2018-06-06 03:15 pm (UTC)(link)
Это шуточный вопрос???
Интересно, если обнулить и проехать 50 км, то как он, бортовой, ага, компьютер посчитает расход за 100 км? Магия

[identity profile] iv-an-ru.livejournal.com 2018-06-06 04:19 pm (UTC)(link)
"Плотность населения Ватикана --- два папы римских на квадратный километр"

[identity profile] nemez-06.livejournal.com 2018-06-06 03:47 pm (UTC)(link)
Принцип расчёта как у спидометра. Чем больше скорость на магните генератора на коробке тем больше релюшка отклоняет стрелку.
Нет никакого расчёта и хранения. Может компьютер и хранит что-то но датчик работает по такому же принципу как спидометр. В трубку встроен генератор который подаёт ток на релюшку или в компьютер показывающий цифры.



Здесь картинки и схемы - https://www.google.com/imgres?imgurl=http%3A%2F%2Favto-remont-toyota.ru%2Fwp-content%2Fuploads%2F2012%2F012%2Fimage023.png&imgrefurl=http%3A%2F%2Favto-remont-toyota.ru%2Fkak-rabotaet-spidometr.html&docid=QNie4HaJoLgJCM&tbnid=nMu2ApSnCgi1ZM%3A&vet=10ahUKEwidwY_asL_bAhWEhaYKHa6eDdMQMwhAKAIwAg..i&w=852&h=387&client=firefox-b&bih=606&biw=1152&q=%D0%BA%D0%B0%D0%BA%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82%20%D1%81%D0%BF%D0%B8%D0%B4%D0%BE%D0%BC%D0%B5%D1%82%D1%80&ved=0ahUKEwidwY_asL_bAhWEhaYKHa6eDdMQMwhAKAIwAg&iact=mrc&uact=8
crower: (Crower)

[personal profile] crower 2018-06-06 03:48 pm (UTC)(link)
Как вариант может считать расход за последние 100 км. Это, imho, практичнее чем расход за всё время.
Для этого достаточно хранить расход за каждый из последних 100 км. Дальше кольцевой буфер и каждый километр из среднего вычитаем самое старое значение, добавляем новое и сохраняем в буфер на место старого. В результате контроллер получается даже проще — не нужно уметь умножать и делить, а только складывать и вычитать кубики (см³).

[identity profile] wormball.livejournal.com 2018-06-06 04:38 pm (UTC)(link)
Очень не люблю выражение "тебе не понять", но похоже, это единственно верный ответ в данном случае. Автор, тебе не понять. Просто смирись с этим.

[identity profile] red-alert22.livejournal.com 2018-06-06 04:46 pm (UTC)(link)
господи, спасибо тебе за математику!!!
средний рх=расход/пробег.
2 цифры, карл!

[identity profile] wormball.livejournal.com 2018-06-06 04:49 pm (UTC)(link)
Для более полного погружения в суть настоящего произведения настоятельно рекомендую прочитать сей пост того же автора: https://siron-nsk.livejournal.com/27788.html

Ключевая цитата:

> Объяснить-то можно всё, только не всем.

(no subject)

[identity profile] wormball.livejournal.com - 2018-06-07 10:26 (UTC) - Expand

[identity profile] glagolev.livejournal.com 2018-06-06 09:22 pm (UTC)(link)
комп считает\учитывает
1. общий расход топлива
2. общий пробег

[identity profile] melbu.livejournal.com 2018-06-07 06:17 am (UTC)(link)
Вот уж никогда не думал, что зная текущий пробег и расход за любой промежуток времени нужен специально обученный математик для вычисления среднего расхода. Раньше с этим справлялись в начальной школе.

[identity profile] mister1st.livejournal.com 2018-06-07 07:38 am (UTC)(link)
Тссс, спугнете. Инженегры поколения ЕГЭ. Они еще дадут прикурить ...

[identity profile] yshikalenko.livejournal.com 2018-06-07 09:11 am (UTC)(link)
У меня тоже есть похожий счетчик. Но я программист и, думаю, алгоритм простой. Выводимое значение равно частному от деления "общего количества истраченного бензина" на "пробег в сотнях километров." И делитель и делимое при сбросе обнуляются. Ведь при таком решении ряды не нужны?
Edited 2018-06-07 09:18 (UTC)

Page 1 of 2