2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 Граничные эффекты сплайнов
Сообщение04.08.2007, 21:17 
Передо мной стоит задача: необходимо соединить верхней (нижней) огибающей функции все ее максимумы (минимумы). В качестве средства интерполяции выбраны кубические сплайны. Но у них есть нежелательный эффект: на границах функции (ее первый и последний отсчеты) сплайны имеют (могут иметь) большие по амплитуде осцилляции, вносящие искажения.

Как средство решения я вижу экстраполяцию функции за пределы рассматриваемого промежутка. Какие вы мне посоветуете способы экстраполяции, если неизвестно точное аналитическое выражение функции (она задана таблично)?

С уважением,

Dmitrij

 
 
 
 
Сообщение05.08.2007, 09:15 
Аватара пользователя
Экстраполяция достаточно опасная процедура. Если набор точек у Вас большой, то можно посчитать первые несколько точек и последние несколько точек внешними и не использовать их для определения огибающей. Не лучше ли Вам устранить краевые искажения?

 
 
 
 
Сообщение05.08.2007, 20:52 
Возможно, что и лучше. Мне и хотелось бы узнать на этот счет ваши предложения. Как можно устранить эти краевые эффекты?

Что касается экстраполяции, то я использовал экстраполяции четным и нечетным образом (когда за пределы области задания сигнала я продлевал сигнал так, чтобы относительно границы, т.е. конца сигнала, он вел себя как четная и нечетная функции соответственно), периодическую экстраполяцию. Лишь в очень редких случаях (например, детерминированный гармонический сигнал) это решало проблему. Но чаще всего, нежелательные эффекты сохранялись. Именно поэтому хотелось бы узнать о ваших предложениях по устранению краевых эффектов.

Заранее благодарю.

С уважением,

Dmitrij

P.S. Эта задача не является самостоятельной, а решается в рамках адаптивного метода обработки сигналов - декомпозиции на эмпирические моды. Если кого-то заинтересует этот метод, с удовольствием о нем расскажу.

 
 
 
 
Сообщение05.08.2007, 21:03 
Аватара пользователя
:evil:
А как, простите, Вы собираетесь экстраполировать?! Ведь экстраполяция — это дедукция из имеющейся информации. Т.е. она не прибавляет новой. Значит, никакой новой информации при построении сплайна й Вас не будет.

 
 
 
 
Сообщение06.08.2007, 22:17 
Простите, не совсем понял, что именно вы хотели сказать своим кратким монологом. Возможные способы экстраполяции я перечислил выше. Мне же нужны советы по усьранению краевых эффектов, которые я описал. Именно поэтому и встал вопрос об экстраполяции.

С уважением,

Dmitrii

 
 
 
 
Сообщение07.08.2007, 12:08 
Правильно ли я понял задачу?
Вот Ваша таблица, ---
\begin{picture}(120,20)
\put(2,10){\circle*{3}}
\put(5,14){\circle{3}}
\put(9,19){\circle{3}}
\put(14,21){\circle*{3}}
\put(17,17){\circle{3}}
\put(22,15){\circle{3}}
\put(27,10){\circle{3}}
\put(31,8){\circle{3}}
\put(36,7){\circle{3}}
\put(40,4){\circle{3}}
\put(44,3){\circle*{3}}
\put(48,10){\circle{3}}
\put(52,12){\circle{3}}
\put(56,15){\circle{3}}
\put(60,20){\circle*{3}}
\put(65,15){\circle{3}}
\put(70,10){\circle{3}}
\put(75,6){\circle{3}}
\put(79,0){\circle*{3}}
\put(83,2){\circle{3}}
\put(88,8){\circle{3}}
\put(92,12){\circle*{3}}
\put(95,10){\circle{3}}
\put(99,9){\circle{3}}
\put(103,9){\circle*{3}}
\end{picture},
и Вам надо построить два сплайна ---
$\bullet$ через граничные и верхние выделенные точки;
$\bullet$ через граничные и нижние выделенные точки;
Остальные точки вроде как ни при чём. Или они как-то влияют на постановку? Слово "огибающая" здесь как-то очень условно применимо...

Добавлено спустя 23 минуты 6 секунд:

На всякий случай --- проблема выбора граничных условий (влияющих на граничные эффекты) рассматривалась в книге
Завьялов, Леус, Скороспелов. Сплайны в инженерой геометрии.

 
 
 
 
Сообщение07.08.2007, 15:13 
Один из методов, если не ошибаюсь, --- понижение порядка сплайна на первом и последнем отрезках.

 
 
 
 
Сообщение07.08.2007, 23:02 
Действительно, слово "огибающая" не совсем корректно. Но оно здесь, тем не менее, употребляется в верном по смысле значении. Сам вопрос, о котором идет речь, не явялется самостоятельным, он возник у меня в рамках реализации современного и высоко адаптивного метода цифровой обработки нестационаоных сигналов - декомпозиции на эмпирические моды.

Задачу вы поняли верно. Нужно построить 2 сплайна - верхний, интерполирующий все локальные максимумы, и нижний, интерполирующий все локальные минимумы. Точки между максимумами и минимумами, кроме граничных, в интерполяции не участвуют. Но нужно граничные точки. Я пробовал метод зеркального отображения граничных экстремумов за пределы области определения функции, экстраполяцию четным, нечетным, периодическим образом. Последнее несколько уменьшило влияние граничных эффектов, но все же они сохраняются. Под граничными эффектами имеется в виду искажение поведения функции на краях, большие осцилляции на краях.

К сожалению, полностью изложить всю задачу - очень трудно, т.к. тогда пришлось бы описывать весь метод декомпозиции на эмпирические моды. Надеюсь, что предоставленных сведений будет достаточно для дачи совета.

А идею с понижением порядка сплайна я проверю.

С уважением,

Dmitrii

 
 
 
 
Сообщение07.08.2007, 23:43 
Аватара пользователя
:evil:
Dmitrii писал(а):
ростите, не совсем понял, что именно вы хотели сказать своим кратким монологом.

Я хотел сказать, что поскольку экстраполяция не добавляет новых (содержательных) отсчетов, она не может быть ничем, кроме как наложением граничных условий на сплайн.

Со сплайном есть нюанс: условия гладкости дают на два уравнения меньше, чем нужно. Поэтому можно попробовать поиграться производными на концах с целью уменьшения колебаний.

 
 
 
 
Сообщение08.08.2007, 12:05 
Dmitrii писал(а):
К сожалению, полностью изложить всю задачу - очень трудно, т.к. тогда пришлось бы описывать весь метод декомпозиции на эмпирические моды. Надеюсь, что предоставленных сведений будет достаточно для дачи совета.


...А если бы и изложили, то я, например, вряд ли бы стал вникать глубоко --- ситуация не позволяет.

Здесь видятся две возможности.
Кто-то знает предмет вплоть до адаптивности, декомпозиции (возможно речь идёт об специфике интерполяции в обработке сигналов) и понимает, зачем нужны две такие огибающих, и проч. --- и что-то подскажет.

Для остальных (позволю себе так экстраполировать себя) проблема выглядит так: есть набор точек (таблица значений функции), строю кубический сплайн, а он у меня на границах как-то плохо себя ведёт. Т.е. в этой постановке потенциальный советчик фильтрует и отбрасывает информацию о том, что строятся две кривые (одна, семь --- какая разница?), что внутренние точки --- экстремумы какой-то функции. Просто надо построить куб. сплайн по таблице точек.
Я давал совет с этих позиций.

Я когда-то интересовался сплайнами, но интерполировал не функции, а плоские кривые. Здесь есть существенная разница: при интерполяции кривой дана таблица $(x_i,y_i),i=1,\ldots,n$, а строится две функции $x(t),y(t)$. Значения аргумента $t_i$ приходится искусственно выбирать. Простейший вариант --- $t_i=i$ некорректен, и обычно в качестве $t_i$ берётся накопленная длина ломаной (что геометрически обосновано). После этого задача сводилась к интерполяции функции.

Следующей была проблема граничных условий, которая есть и в Вашей задаче --- интерполяции функции по таблице $y_i(x_i)$ (где никаких искусственных аргументов придумывать не надо).
Вопрос о граничных условиях (обычно это производные на концах) обойти, как мне помнится, невозможно. Либо Вы взяли готовый алгоритм сплайнования, который сам молча как-то их выбирает и Вам не говорит (или говорит, но Вы не прочитали :) ). Либо Вы пишете его сами, составляете 3-диагональную матрицу, решаете линейную систему методом прогонки (новые современные штучки, if any, мне неизвестны). Но при составлении матрицы Вы так или иначе должны либо понизить порядок сплайна, либо осознано задать значения производных, либо что-то ещё. От этого граничные эффекты должны зависеть в первую очередь.

Так мне кажется.

 
 
 
 
Сообщение08.08.2007, 21:34 
Функцию для сплайн-интерполяции я использовал готовую, которая имеется в Matlab: interp1(...,'spline').

Мне уже удалось достигнуть существенного улучшения результатов. На последнем отрезке интерполяции (для максимумов, между последним максимумом и граничной точкой, аналогично для минимумов) я, по сути, экстраполировал сплайн с предыдущего отрезка (между предпоследним максимумом и последним максимумом). При этом краевые эффекты устранились на порядок.

Что касается значений производной на концах, то какими вы их посоветуете использоватб? Ведь можно указать их только для первой производной (например, в граничной точке первая производная равна нулю), можно для первых двух производных. Как, по вашему мнению, будет целесообразнее?

И вообще, ведь сплайны бывают не только кубические. Может, есть какие-то сведения насчет того, какие сплайны вносят минимальные граничные эффекты? (параболические, 4-й степени и т.д.)

С уважением,

Dmitrii

 
 
 
 
Сообщение08.08.2007, 22:16 
Аватара пользователя
:evil:
Dmitrii писал(а):
Что касается значений производной на концах, то какими вы их посоветуете использовать? Ведь можно указать их только для первой производной (например, в граничной точке первая производная равна нулю), можно для первых двух производных

1) У кубического сплайна есть две степени свободы (на $n+1$ точке $3n$ параметров и $3n-2$ условия согласования$). Соответственно, можно указать значения производных на концах (или некоторую функцию их согласования). Задавать и первую, и вторую производную на одном конце плохо.

2) условия равенства первой производной нулю на концах минимизирует среднее значение квадрата второй производной по всему интервалу, и очень популярно. Фактически, оно является условием «по умолчанию» для большинства пакетов. Но оно может приводить к колебаниям, если это не соответствует поведению функции.

Можно попробовать наложить дополнительное условие минимизации среднего значения квадрата второй производной по двум граничным интервалам. (Я никогда не пробовал, и не знаю, что из этого может выйти.)

3) Если про функцию известно, что она периодическая, и интервал совпадает с периодом, то это условие — наилучшее возможное.

 
 
 
 
Сообщение09.08.2007, 13:06 
Аватара пользователя
Маленькая поправочка:
незваный гость писал(а):
2) условия равенства первой производной нулю...
Имеется в виду вторая производная.

 
 
 
 
Сообщение09.08.2007, 21:42 
Благодарю вас!!!

В самое ближайшее время все это попробую!!!

С уважением,

Dmitrii

 
 
 
 
Сообщение10.08.2007, 11:35 
Dmitrii писал(а):
Функцию для сплайн-интерполяции я использовал готовую, которая имеется в Matlab: interp1(...,'spline').

С Matlab-ом не знаком, но полагаю, ежели бы я это копал в своём Мапле, то в HELP-описании функции нашёл бы точное определение реализованного алгоритма (т.е. и граничных условий), и какой-нибудь option для модификации алгоритма, либо ссылку "See also interp2, interp3..."

Успехов.

АК

 
 
 [ Сообщений: 16 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group