Имя: Пароль:
LIFE
Наука
OFF: Задачка по суммам геометрических прогрессий.
,
0 RetardedToBoot
 
03.06.22
05:39
В коде ниже описаны три варианта одного и того же усреднения по геометрической прогрессии.
И в третьем варианте ошибочка, и у меня мозгов не хватает ее догнать.
Может кто осилит?

n = 30; // количество усреднения, больше единицы.
q = n / (n - 1); // знаменатель возр.геом.прогр.

s1 = 0;
w1 = 0;

s2 = 0;
w2 = 0;
m2 = 1;

s3 = 0;
w3 = 0;

v = 3;
для шаг = 1 по 100 Цикл
    v = (v + 3) % 31; // тестовая последовательность от которой считается среднее
    
    //*****************************************
    // ВАРИАНТ 1, по принципу убывающей геом.прогр.
    s1 = s1 * (1 - 1/n) + v; // суммир.значений взвешенных по члену геом.прогр.
    w1 = w1 * (1 - 1/n) + 1; // сумма геом.прогресии
    avg1 = s1 / w1;
    
    //*****************************************
    // ВАРИАТ 2, по возрастающей геом.прогр.
    Если w2 > 1000 Тогда // нормализация, когда делитель стал слишк.больш.
        m2 = m2 / w2;
        s2 = s2 / w2;
        w2 = 1;
    КонецЕсли;
    m2 = m2 * q; // член возрастающей геом.прогрессии.
    w2 = w2 + m2; // сумма геометрической прогрессии
    s2 = s2 + v * m2; // суммир.значений взвешенных по члену геом.прогр.
    avg2 = s2 / w2;
    
    //*****************************************
    // ВАРИАНТ 3, по возр.геом.прогр. без сохранения элемента прогрессии
    Если w3 > 100 Тогда // нормализация, когда делитель стал слишк.больш.
        s3 = s3 / w3; // и вот здесь у меня мозг сломался. Для такого варианта это не работает,
        w3 = 1;       //  и возникает расхождение когда происходит это условие.
    КонецЕсли;
    
    // член возрастающей геом.прогрессии., вычисляемый из суммы геом.прогр.
    m3 = w3 * (q - 1) + q;
    
    w3 = w3 + m3; // сумма геометрической прогрессии
    s3 = s3 + v * m3; // суммир.значений взвешенных по члену геом.прогр.
    avg3 = s3 / w3;
    
    //*****************************************
    
    сообщить("" + шаг + ", среднее значение: " +
    формат(avg1, "ЧДЦ=3; ЧГ=0") + ", " +
    формат(avg2, "ЧДЦ=3; ЧГ=0") + ", " +
    формат(avg3, "ЧДЦ=3; ЧГ=0") +
    ", вес3 " + окр(w3, 3));
КонецЦикла;
1 1ctube
 
03.06.22
06:05
Что это вообще такое
2 RetardedToBoot
 
03.06.22
06:51
(1) расчет средних арифметических для бесконечных рядов. Использоваться может там, где нужен расчет средних для рядов - прогнозирование, планирование, и т.д. И в частности, варианты 2 и 3 это для взаимоисключающих значений - если нужно усреднять несколько рядов по одному делителю, чтобы каждый из рядов не добавлять каждый раз.
3 Bigbro
 
03.06.22
07:20
куча странных и неправильных формул
без обозначений, дано, условий.
кто вас так учил?
4 RetardedToBoot
 
03.06.22
08:01
(3) научи как правильно. Если не вы, то кому еще? Раз говорите, что эти формулы не правильные, значит знатете какие должны быть правильными...
5 Ненавижу 1С
 
гуру
03.06.22
08:29
(4) пишите нормально, что дано, что надо получить, как пробовали, а не смесь вот этого всего
6 Bigbro
 
03.06.22
08:45
(4) средняя школа 8-10 класс, учебник математики.
не моя специализация.
могу конечно поработать репетитором но откуда у вас такие деньги.
7 RetardedToBoot
 
03.06.22
08:52
(6) да это вы отмазываетесь, просто не хотите признаваться.
8 RetardedToBoot
 
03.06.22
08:53
(5) Так что именно будет нормальным? Вот скажем выражение "s1 = s1 * (1 - 1/n) + v", как оно будет в "нормальном" описании? А то я понапишу, мне не сложно пару страничек, и будет опять же смесь...

Есть эталонный вариант 1. Он работает, но в таком виде возникают заморочки в других вычислениях, которые не имеют отношения к этому описанию. Есть вариант 2, который то же работает, и результат его вычислений эквивалентен варианту 1. Но в нем используется три суммируемых переменных: член геом.прогр, сумма геом.прогр, и сама сумма значений. А хочется получить такое же, но сохранять лишь две накапливаемых суммы, а не три как в варианте 2. Что я и представил в варианте 3. Который работает до момента "Если w3 > 100 Тогда".
9 Ненавижу 1С
 
гуру
03.06.22
08:57
(8) продолжайте...
10 RetardedToBoot
 
03.06.22
08:58
(9) что именно?
11 Ненавижу 1С
 
гуру
03.06.22
09:00
(10) нести поток сознания
12 RetardedToBoot
 
03.06.22
09:02
(11) куда нести? что нести? как это вообще носится?
13 Выпрь
 
03.06.22
09:16
(12) задачу собираешься по человечески формулировать,
А не найдите ошибку в моем коде
14 Bigbro
 
03.06.22
09:59
насчет "моём" крайне сомнительно.
(7) отмазываюсь от чего? ты здоров вообще?
чтобы пытаться понять бредятину какого то неизвестного автора код которого ты сюда припер не понимая в нем ничерта, при том ни ты ни тот автор не владеете математикой в объеме средней школы...
перед кем мне и за что отмазываться, ало?
15 Ёпрст
 
03.06.22
10:10
(0) ошибка в 248 строке
16 Ёпрст
 
03.06.22
10:11
И да, NIGHTHUNTER вам не родной брат ?
17 RetardedToBoot
 
03.06.22
10:52
(15) любопытно
(16) я хз, он мне не говорил
18 RetardedToBoot
 
03.06.22
14:08
(14) какой-то у вас не связанный текст, с кучей отсебятины и не понятных выводов. Словно корчевателем отписывался. Вы бы попробовали бы нейросеточками, они более связанный текст выдают.
19 Конструктор1С
 
03.06.22
14:25
(2) среднее арифметическое считается по элементарной формуле. А то что в (0) какая-то хрень, делающая непонятно что. Код должен быть читаемым и понятным. Не следует убивать код невеятной математикой ради невнятных целей
20 RetardedToBoot
 
03.06.22
14:39
(19) это если пользоваться школьными понятиями. Среднее арифметическое взвешенное:
https://ru.wikipedia.org/wiki/Среднее_арифметическое_взвешенное

Как вы предлагаете сделать эту математику более понятной? Цель - это посчитать такое среднее взвешенное по членам геометрической прогрессии. Считается для каждого шага цикла. Такой расчет используется ну очень широко в статистических расчетах, например как коэффициенты скорости обучения. В таком случае формула обычно имеет вид: newSum = preSum * (1 - alpha) + newValue * alpha; где newValue зависит от природы расчетов. А мне эта формула нужна немного вывернутая, что бы не было множителя у preSum. И тогда она приобретает вид, описанный мной в топике.
21 Конструктор1С
 
03.06.22
15:18
(20) >>Как вы предлагаете сделать эту математику более понятной?

Не предлагаю делать математику более понятной. Предлагаю отказываться от математики вообще, где это возможно. Математика сама по себе непонятность. Математика в коде двойная непонятность

Намедни полистал научную работу одного институтского писаки. Тема что-то вроде "графы затрат в налоговой оптимизации". Красиво, научно... и совершенно не применимо на практике. Вряд ли в природе встречаются бухгалтерии, в которых каждый второй бухгалтер высшую математику на пальцах крутит
22 ДедМорроз
 
03.06.22
20:58
Начнем просто - среднее взвешенное требует наличия усредняемых величин - тут понятно,члены геометрической прогрессии как раз и есть эти усредняемые величины.
И набора коэффициентов для усреднения - их мы откуда берем ?
23 RetardedToBoot
 
04.06.22
10:01
(22) не, мне средняя членов не нужна, они как раз коэффициенты усреднения.

Там же практически в самом верху:
v = (v + 3) % 31; // тестовая последовательность от которой считается среднее

Так ко всем сколь-либо значимым действиям расписаны комментарии.
24 Bigbro
 
06.06.22
06:43
(18) нейросеточки я писал еще когда ты пешком под стол ходил видимо.
конечно не чета нынешним но в рамках тех теорий что существовали на тот момент они своё отрабатывали.
а вот тебе можно и попытаться воспользоваться результатами.
раз уж своего ты родить не можешь и в чужом разобраться тоже.
25 Ненавижу 1С
 
гуру
06.06.22
07:24
26 RetardedToBoot
 
06.06.22
08:12
(25) не, не угадал.
27 RetardedToBoot
 
06.06.22
08:25
(24) чего я не понимаю, так это зачем вы вклинились в тему, которая по вашим же словам, не ваша специализация, и теперь доказываете здесь, что самый умный, исключительно выражением свое презрения.
28 Ненавижу 1С
 
гуру
06.06.22
08:48
(26) я не угадываю
29 Bigbro
 
06.06.22
08:49
(27) все по существу было высказано в (3)
поскольку никаких вменяемых комментариев с вашей стороны не последовало - соответствующий оборот и приняла дискуссия.
а не моя специализация - это про обучение недорослей азам школьной математики.
но как уже говорил - я могу.
если же нужна помощь потрудитесь внятно сформулировать задачу о чем вам уже все кто писал в теме сказали.
30 RetardedToBoot
 
06.06.22
17:24
(29) боюсь что вам нужно сначала читать научиться. Иначе вам ничего не поможет. Как я написал постом выше, вы ничего кроме выдумывания всяких оскорблений не умеете.
31 RetardedToBoot
 
06.06.22
17:28
(28) ну извени. МНК имеет пересечения со многими вещами, например средняя это МНК без переменных. Но классическая МНК не поддерживает усреднение по членам геометрической прогрессии. Но опять же, вопрос не в решении этого случая, а в специфичном варианте описанном в топике.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой