ГАЗ-67 писал(а):
Попробуйте прологарифмировать числитель и знаменатель…
Для «грязных» данных это не поможет.
ГАЗ-67 писал(а):
А какие проблемы возникают со сплайнами?
Интерполирующий сплайн на грязных данных работает плохо. А сглаживающий тяжело строить, особенно на большом массиве данных. И тот, и другой почти невозможно в реальном времени.
slbel писал(а):
Как этот метод называется? Если можно, нормальную ссылку в инете на описание метода.
Метод наименьших квадратов?
Бог с ним, с названием.
Давайте разберемся по существу. Мы взяли
точку, и пытаемся аппроксимировать МНК:
. С таким же успехом мы можем сдвинуть координату на
, и получить новый полином (с другими
):
. Но! МНК станет:
. А, поскольку узлы равноотстоящие, мы имеем
, и, соответственно,
. Или, обозначая
,
,
,
,
. При этом наш интерполяционный полином станет
.
Теперь дифференцируем по
и получаем уравнения:
,
,
,
.
(1) Очевидно, что матрица системы постоянна, в смысле от
не зависит. Более того, она легко и непринужденно точно обращается любой системой компьютерной алгебры. Не хочется вбивать формулы — тоже неплохо. Можно вычислить и обратить в программе.
(2) Таким образом, вычисление сводится к подсчету сумм в правой части и умножению на обратную матрицу.
(3) Следующий фокус позволяет резко сократить объем вычислений при переходе от
. Обозначим
.
Действительно, например,
. Таким образом, мы за два сложения смогли перевычислить
.
.
“All together now”: за весьма ограниченное и независящее от
количество сложений/умножений мы можем перейти от интерполяционного полинома в
к полиному в
. Это дает основание считать производные при
(первая
, вторая —
) и переходить к следующему полиному.
Бич этого подхода — накопление ошибки. Всё точно складывается и вычитается только на бумаге. Реально необходимо по крайней мере двойная точность (double).