|
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) ну извени. МНК имеет пересечения со многими вещами, например средняя это МНК без переменных. Но классическая МНК не поддерживает усреднение по членам геометрической прогрессии. Но опять же, вопрос не в решении этого случая, а в специфичном варианте описанном в топике.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |