2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Граничные эффекты сплайнов
Сообщение04.08.2007, 21:17 


02/08/07
92
Передо мной стоит задача: необходимо соединить верхней (нижней) огибающей функции все ее максимумы (минимумы). В качестве средства интерполяции выбраны кубические сплайны. Но у них есть нежелательный эффект: на границах функции (ее первый и последний отсчеты) сплайны имеют (могут иметь) большие по амплитуде осцилляции, вносящие искажения.

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

С уважением,

Dmitrij

 Профиль  
                  
 
 
Сообщение05.08.2007, 09:15 
Заслуженный участник
Аватара пользователя


11/04/07
1352
Москва
Экстраполяция достаточно опасная процедура. Если набор точек у Вас большой, то можно посчитать первые несколько точек и последние несколько точек внешними и не использовать их для определения огибающей. Не лучше ли Вам устранить краевые искажения?

 Профиль  
                  
 
 
Сообщение05.08.2007, 20:52 


02/08/07
92
Возможно, что и лучше. Мне и хотелось бы узнать на этот счет ваши предложения. Как можно устранить эти краевые эффекты?

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

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

С уважением,

Dmitrij

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

 Профиль  
                  
 
 
Сообщение05.08.2007, 21:03 
Заслуженный участник
Аватара пользователя


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

 Профиль  
                  
 
 
Сообщение06.08.2007, 22:17 


02/08/07
92
Простите, не совсем понял, что именно вы хотели сказать своим кратким монологом. Возможные способы экстраполяции я перечислил выше. Мне же нужны советы по усьранению краевых эффектов, которые я описал. Именно поэтому и встал вопрос об экстраполяции.

С уважением,

Dmitrii

 Профиль  
                  
 
 
Сообщение07.08.2007, 12:08 


29/09/06
4552
Правильно ли я понял задачу?
Вот Ваша таблица, ---
\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 


29/09/06
4552
Один из методов, если не ошибаюсь, --- понижение порядка сплайна на первом и последнем отрезках.

 Профиль  
                  
 
 
Сообщение07.08.2007, 23:02 


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

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

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

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

С уважением,

Dmitrii

 Профиль  
                  
 
 
Сообщение07.08.2007, 23:43 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Dmitrii писал(а):
ростите, не совсем понял, что именно вы хотели сказать своим кратким монологом.

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

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

 Профиль  
                  
 
 
Сообщение08.08.2007, 12:05 


29/09/06
4552
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 


02/08/07
92
Функцию для сплайн-интерполяции я использовал готовую, которая имеется в Matlab: interp1(...,'spline').

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

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

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

С уважением,

Dmitrii

 Профиль  
                  
 
 
Сообщение08.08.2007, 22:16 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Dmitrii писал(а):
Что касается значений производной на концах, то какими вы их посоветуете использовать? Ведь можно указать их только для первой производной (например, в граничной точке первая производная равна нулю), можно для первых двух производных

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

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

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

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

 Профиль  
                  
 
 
Сообщение09.08.2007, 13:06 
Заслуженный участник
Аватара пользователя


01/08/06
3131
Уфа
Маленькая поправочка:
незваный гость писал(а):
2) условия равенства первой производной нулю...
Имеется в виду вторая производная.

 Профиль  
                  
 
 
Сообщение09.08.2007, 21:42 


02/08/07
92
Благодарю вас!!!

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

С уважением,

Dmitrii

 Профиль  
                  
 
 
Сообщение10.08.2007, 11:35 


29/09/06
4552
Dmitrii писал(а):
Функцию для сплайн-интерполяции я использовал готовую, которая имеется в Matlab: interp1(...,'spline').

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

Успехов.

АК

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group