ГАЗ-67 писал(а):
Попробуйте прологарифмировать числитель и знаменатель…
Для «грязных» данных это не поможет.
ГАЗ-67 писал(а):
А какие проблемы возникают со сплайнами?
Интерполирующий сплайн на грязных данных работает плохо. А сглаживающий тяжело строить, особенно на большом массиве данных. И тот, и другой почти невозможно в реальном времени.
slbel писал(а):
Как этот метод называется? Если можно, нормальную ссылку в инете на описание метода.
Метод наименьших квадратов?

Бог с ним, с названием.
Давайте разберемся по существу. Мы взяли

точку, и пытаемся аппроксимировать МНК:

. С таким же успехом мы можем сдвинуть координату на

, и получить новый полином (с другими

):

. Но! МНК станет:

. А, поскольку узлы равноотстоящие, мы имеем

, и, соответственно,

. Или, обозначая

,

,

,

,

. При этом наш интерполяционный полином станет

.
Теперь дифференцируем по

и получаем уравнения:

,

,

,

.
(1) Очевидно, что матрица системы постоянна, в смысле от

не зависит. Более того, она легко и непринужденно точно обращается любой системой компьютерной алгебры. Не хочется вбивать формулы — тоже неплохо. Можно вычислить и обратить в программе.
(2) Таким образом, вычисление сводится к подсчету сумм в правой части и умножению на обратную матрицу.
(3) Следующий фокус позволяет резко сократить объем вычислений при переходе от

. Обозначим

.
Действительно, например,

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

.

.
“All together now”: за весьма ограниченное и независящее от

количество сложений/умножений мы можем перейти от интерполяционного полинома в

к полиному в

. Это дает основание считать производные при

(первая

, вторая —

) и переходить к следующему полиному.
Бич этого подхода — накопление ошибки. Всё точно складывается и вычитается только на бумаге. Реально необходимо по крайней мере двойная точность (double).