У меня проблема с подгонкой многочлена высокого порядка к (не очень) шумным данным с использованием линейных наименьших квадратов. В настоящее время я использую полиномиальные порядки около 15 - 25, которые работают на удивление хорошо: зависимость очень близка к линейной, но точность моделирования «очень близко» имеет решающее значение. Я использую функцию polyfit () Matlab и (очевидно) нормализую данные x. Это обычно работает нормально, но я столкнулся с проблемой с некоторыми недавними наборами данных. Выделенный полином имеет экстремумы в интервале x-данных. Для приложения, над которым я работаю, это не-нет. Полиномиальная модель не должна иметь стационарных точек в интервале х.
Так что мне нужно добавить ограничение к задаче наименьших квадратов: производная от подогнанного полинома должна быть строго положительной в известном x-диапазоне (или строго отрицательной - это зависит от данных, но простая линейная подгонка быстро скажите мне, что это такое.) Я быстро взглянул на доступные функции панели инструментов оптимизации, но признаюсь, что не знаю, как это сделать. У кого-нибудь есть предложения?
[Я ценю, что, вероятно, есть модели лучше, чем полиномы для этих данных, но в краткосрочной перспективе изменить форму модели не представляется возможным]
[Заключительное замечание: я наконец-то получил разрешение заменить эту ужасную полиномиальную модель! Я собираюсь принять непараметрический подход, сглаживание сплайнов, используя превосходный код SPLINEFIT от Jonas Lundgren. Преимущество этого заключается в том, что я уже использую сплайн-модель в приложении для конечного пользователя, поэтому у меня уже есть код C # для оценки сплайн-модели]