2015-04-22 7 views
1

Так отредактирован, потому что некоторые из нас думали, что этот вопрос не по теме.сплайн-аппроксимация с заданным количеством интервалов

Мне нужно построить сплайн (приближение) по 100 пунктам в одной из сред, перечисленных в тегах. Но мне это нужно с точным количеством интервалов (максимум 6 интервалов - отдельные уравнения - во всей области). Пакеты/библиотеки в R и Maxima, которые я знаю, позволяют мне строить сплайн по этим точкам, но с 25-30 интервалами (отдельные уравнения). Кто-нибудь знает, как построить сплайн с заданным количеством интервалов без кодирования всего алгоритма снова и снова?

+2

сплайн с точным числом сегментов? Я не понимаю этого неясного предложения, вы можете переформулировать? Кстати, набрав что-то вроде «R spline» в любой поисковой системе, вы попадете на страницу https://stat.ethz.ch/R-manual/R-devel/library/stats/html/smooth.spline .html .... –

+0

То же, что и @ colonel-beauvel. Я не понимаю вашу точную проблему, но здесь даются основы интерполяции сплайнов в Scilab [здесь] (http://wiki.scilab.org/Overview%20of%20interpolation % 20in% 20Scilab) – spoorcc

+0

Возможно, если вы добавили простой пример [Как сделать воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/ 5963610 # 5963610), вы могли бы прояснить ситуацию. – WaltS

ответ

1

То, что вы ищете, может быть описано как «локальная регрессия» или «локализованная регрессия»; поиск этих терминов может вызвать некоторые хиты.

Я не знаю, можете ли вы найти то, что вы описали. Но реализация его не кажется слишком сложной: (1) Разделить домен на N интервалов (скажем, N = 10). Для каждого интервала (2) составляйте список данных в интервале, (3) устанавливайте полином низкого порядка (например, кубический) в данные в интервале с использованием наименьших квадратов.

Если это звучит интересно, я могу вдаваться в детали, или, может быть, вы сами сможете это решить.

+0

Спасибо за ваш ответ. Я рассматривал этот подход, но, вероятно, это приведет к разрыву на границах интервалов. – bpop

+0

Да, ты прав. Вам нужно будет установить ограничения, чтобы совпадение концов. Я могу придумать два способа сделать это. (1) Добавьте термин для каждой пары совпадающих концов, которые наказывают разницу между p [i - 1] (m [i]) и p [i] (m [i]), где p [i - 1] и p [ i] - полиномы слева и справа от точки совпадения m [i]. Это так называемое мягкое ограничение. Он менее точен, но проще в обращении. (2) Ограниченная минимизация суммы квадратов с помощью дополненного метода Лагранжа или другого метода ограниченной оптимизации. Я считаю, что это не слишком сложно. Я опишу это, если вы захотите. –

+0

Но тогда мне придется все кодировать, верно? Я не смогу добавить эти ограничения к некоторому методу, реализованному в одном из сред, перечисленных в тегах. – bpop

 Смежные вопросы

  • Нет связанных вопросов^_^