[identity profile] siron-nsk.livejournal.com posting in [community profile] engineering_ru
Я понимаю, что это скорее к математикам, но там сообщество закрытое и полуживое.

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



Как это вообще возможно, если для вычисления текущего среднего значения нам нужен ВЕСЬ ряд чисел? Или это не так? Что это за формула такая?
Варианты "ряд на самом деле не бесконечен" или "компьютер реально хранит весь ряд" имеют очевидное объяснение, поэтому пропустим их.
Page 1 of 5 << [1] [2] [3] [4] [5] >>

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

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

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

Date: 2018-06-06 01:30 pm (UTC)
From: [identity profile] dr-trans.livejournal.com
даже хранить особо нечего, просто счетчик с приращением и сохранение последнего числа (двух числел --- километры и литры -- для вычисления)

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

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

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

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

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

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

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

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

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

    // 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 счетчика - километраж и расход.

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

Date: 2018-06-06 01:45 pm (UTC)
From: [identity profile] dr-trans.livejournal.com
возможно, при выключении двигателя машина просто запоминает послднее среднее среднее значение (уже без км и л). а в движении вычисляет среднее между средним значением из памяти и текущим средним. потом снова запоминает последнее.
для сглаживания кривой можно держать в памяти, например, 100 последних средних значений. и сдвигать ряд, запоминая новое среднее вместо самого старого.
Edited Date: 2018-06-06 01:47 pm (UTC)

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

Date: 2018-06-06 01:49 pm (UTC)
From: [identity profile] dr-trans.livejournal.com
не вижу сейчас проблем с хранением даже большой таблицы данных за все воемя эксплуатации.
можно хранить готовые средние значения по каждой поездке (или за сутки). это уже будет не миллион, а не больше 500 значений в год.
думаю, так и происходит. в конце поездки вычисляется среднее, которое потом хранится.
и вполне можно автоматичски раз в месяц укрупнять показатель, усредняя значения из архива. так можно хранить 100 значений за послденмй месяц и всего 12 значений за прошлый год.
Edited Date: 2018-06-06 01:52 pm (UTC)

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

Date: 2018-06-06 01:57 pm (UTC)
From: [identity profile] kaafree.livejournal.com
Для расчета расхода важно не сколько залили, а сколько сожгли.

Date: 2018-06-06 02:10 pm (UTC)
From: [identity profile] eednew.livejournal.com
Его не надо считать.

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

Date: 2018-06-06 02:19 pm (UTC)
From: [identity profile] kspshnik.livejournal.com
Да с чего бы ему скакать-то? Даже при мгновенном потреблении 50л/100км в базе лежат, например, 23E+15 литров и 19Е+14 километров.

Более того, я уверен, что там хранятся данные за N < 10000 последних километров пробега и среднее за все предыдущие.

Date: 2018-06-06 02:20 pm (UTC)
From: [identity profile] kspshnik.livejournal.com
Скорее ряды за N километров + средние за предыдущие периоды. Просто среднее при переходе за сто тысяч тупо будет меняться уже в третьем-четвертом десятичном знаке.
Page 1 of 5 << [1] [2] [3] [4] [5] >>

Profile

engineering_ru: (Default)
Инженерия

December 2025

S M T W T F S
 123456
78910111213
14151617181920
2122232425 2627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 28th, 2026 08:40 am
Powered by Dreamwidth Studios