Диалог автора. Александр Смирнов. - страница 35

 

А если вычислить массив квадратичных весов в функции init(), вообще все может вполне шоколадно получиться. Да еще и оптимизировать вычисления с помощью IndicatorCounted(). Ну будет он подвисать первые несколько секунд при больших периодах, да и шут с ним...

 
Mathemat:

А если вычислить массив квадратичных весов в функции init(), вообще все может вполне шоколадно получиться. Да еще и оптимизировать вычисления с помощью IndicatorCounted(). Ну будет он подвисать первые несколько секунд при больших периодах, да и шут с ним...

Пробовал. По готовому массиву считает скользящую регрессию со скоростью обыкновенной машки.
Единственное Неудобство, массив получился размерностью А[][20] (на изи нет структур),
и приходится как на БЭСМ-3 помнить цифровой адрес ячейки)))
 
Mathemat:

Ну будет он подвисать первые несколько секунд при больших периодах, да и шут с ним...

Мне кажется заметного подвисания на первом расчёте быть не должно. Но, как сейчас кажется, мы должны сначала рассчитать уходящие значения (запоминать их смысла вроде нет), затем посчитать редуцированные суммы, затем рекуррентно рассчитать их новые значения и, наконец, добавить входящие значения. Всё это для трёх сумм (собственно сумма, первая и вторая производная). При небольшом периоде это, по числу операций, вполне потянет на полный расчёт единственной нужной суммы.
Вообще говоря, такое предельное форсирование оправдано только если алгоритм предназначен для оптимизации в тестере, имхо.
 
Самое интересное, что независимо от порядка полиномиальной машки время вычислений будет примерно одинаковым (если массив весов заготовить заранее).
 
откопал свою поделку - полиноминальная машка
Файлы:
 
Не слишком ли сложно дать пояснение, Дмитрий, особенно по поводу смысла параметров? Поделка, мягко говоря, очень качественная.
 

Это не просто:-)

Полином: K0*X^0+K1*X^1+K2*X^2+K3*X^3..., коэффициенты К определяются в строке K="1/5/6/1/-20" (K0=1, K2=5...). Аргумент X меняется в пределах от ArgumentMin до ArgumentMax и получается некоторая кривулина, которую можно посмотреть в режиме ControlMode=true, а дальше эта кривулина использутся как коэффициенты для скользящей.

Было бы интересней сделать сплайн, а то этим полнимомом не просто получить желаемую форму кривой.

 
Кривая - это что-то типа весовой функции к-тов для машки?
 
Mathemat:
Кривая - это что-то типа весовой функции к-тов для машки?

да, они и есть
 

Краевое значение ( X 1, правый край) для кубического полинома построенного при помощи МНК, для семи точек ряда, ( X 7*(-2)+ X 6*(4)+ X 5*(1)+ X 4*(-4)+ X 3*(-4)+ X 2*(8)+ X 1*(39))/42 . Ряд для проверки 0, 1, 8, 27, 64, 125, 216, при подстановке в формулу первых шести чисел в результате должно быть 216, так как выравнивается кубическим полиномом ряд состоящий из кубов. Источник, Кендалл М и Стьюарт А.


Кстати, тот же самый кубический полином для семи точек, но дающий оценку значения по МНК для средних точек, т.е.

Для X 4 будет ( X 7*(-2)+ X 6*(3)+ X 5*(6)+ X 4*(7)+ X 3*(6)+ X 2*(3)+ X 1*(-2))/21

Для Х3 будет ( X 7*(1)+ X 6*(-4)+ X 5*(2)+ X 4*(12)+ X 3*(19)+ X 2*(16)+ X 1*(-4))/42

Для Х2 будет ( X 7*(4)+ X 6*(-7)+ X 5*(-4)+ X 4*(6)+ X 3*(16)+ X 2*(19)+ X 1*(8))/42


Вообще, это интерполяционные формулы, по этому для экстраполяции, например в точку X 0, т.е в будущее, за пределы существующего ряда, придется искать другие коэффициенты в формуле.