2014 dxdy logo

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

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


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Сплайн Эрмита прыгает куда-то..
Сообщение29.07.2016, 15:42 


17/01/11
17
Приветствую!

Что называется, "помогите решить/разобраться" :D Совсем всё забыл, видимо... Написал интерполяцию сплайнами Эрмита для функции от времени. Внешне визуально всё норм, но как только расстояние между точками уменьшается до десятых долей секунды, начинаются волны, и чем меньше расстояние, тем сильнее. Есть большие сомнения, что это его нормальное поведение. Наверное, что-то не так...?

Картинки прилагаются.

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

Отладчиком посмотрел одну из проблемных точек, ту что на картинке. Производная посчиталась примерно равной минус двум, визуально так и есть. Высота выделенного квадратика на 14-й секунде в два раза больше ширины, график 1:1. Ну, а дальше по формуле из хорошей книжки, страница 76, получается вот эта волна. Откуда она получается??

Изображение
Изображение

 Профиль  
                  
 
 Re: Сплайн Эрмита прыгает куда-то..
Сообщение29.07.2016, 16:13 
Заслуженный участник
Аватара пользователя


23/07/08
10894
Crna Gora
Сплайны бывают разные, но в практически полезных ситуациях они должны обеспечивать непрерывность первой производной. На второй картинке этого не видно: в крайних точках излом.

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

Если всё-таки требуется, надо в первую очередь выяснить, почему она не выполняется.

 Профиль  
                  
 
 Re: Сплайн Эрмита прыгает куда-то..
Сообщение29.07.2016, 16:24 


17/01/11
17
Там не излом, там просто очень крутой перегиб. Я тоже ломаю голову, почему он крутой. Это как-то связано с тем, что одна точка стоит вплотную, а вторая - аж на расстоянии четырёх секунд. Но как именно - я не въезжаю пока.

 Профиль  
                  
 
 Re: Сплайн Эрмита прыгает куда-то..
Сообщение29.07.2016, 16:31 
Заслуженный участник
Аватара пользователя


23/07/08
10894
Crna Gora
Простите, пока не верю. (Не в том смысле, что Вы меня обманываете, а в том, что делаете неправильные выводы. :-) ) Какая степень полинома используется, третья? Давайте возьмём нижнюю точку. Дайте мне
$\bullet$ коэффициенты того полинома, который слева (с волной)
$\bullet$ коэффициенты того полинома, который справа (плавный)
$\bullet$ координаты точки

 Профиль  
                  
 
 Re: Сплайн Эрмита прыгает куда-то..
Сообщение29.07.2016, 16:36 


17/01/11
17
Третья степень. У каждого отрезка наблюдается по два изгиба:
$r(t)=p_i(1-3w^2+2w^3)+p_{i+1}(3w^2-2w^3)+q_i(w-2w^2+w^3)+q_{i+1}(-w^2+w^3)$

 Профиль  
                  
 
 Re: Сплайн Эрмита прыгает куда-то..
Сообщение29.07.2016, 16:36 
Заслуженный участник


11/05/08
32166
Postscripter в сообщении #1140826 писал(а):
Написал интерполяцию сплайнами Эрмита для функции от времени.

Postscripter в сообщении #1140826 писал(а):
а дальше по формуле из хорошей книжки, страница 76

Ну вообще-то второе противоречит первому: в той самой замечательной книжке иксы и игреки равноправны, для описания же сигнала нужна только зависимость игреков от икса.

Однако наличия изломов это никак не объясняет и не извиняет (а там именно изломы). Кроме того, и наклоны в двух внутренних узлах вихляющего участка заданы тоже откровенно неадекватно. Т.е. это явный глюк в программе.

 Профиль  
                  
 
 Re: Сплайн Эрмита прыгает куда-то..
Сообщение29.07.2016, 16:48 


17/01/11
17
Я кажется флешку на работе оставил... :oops: :facepalm: Только не пинайте сильно...) В понедельник дам коэффициенты и всё что нужно!

Цитата:
второе противоречит первому

Нет, не противоречит. В книжке двухмерный вектор $r=r(t)$, у меня можно сказать одномерный $x=x(t)$ - разницы нет.

Цитата:
а там именно изломы

Если сильно увеличить, видно дугу, тут все ок. А вот наклоны неадекватные, это да.

 Профиль  
                  
 
 Re: Сплайн Эрмита прыгает куда-то..
Сообщение29.07.2016, 16:58 
Заслуженный участник


11/05/08
32166
Postscripter в сообщении #1140841 писал(а):
В книжке двухмерный вектор r(t), у меня можно сказать одномерный x(t) - разницы нет.

Разница принципиальна -- это совсем разные типы кривых, и рабочие формулы разные. Но дело не в этом.

Postscripter в сообщении #1140841 писал(а):
Если сильно увеличить, видно дугу, тут все ок.

Это можно объяснить либо эффектами переинтерполирования при отрисовке графика -- либо это не кубический сплайн. Потому что кубический сплайн (даже двумерный, а уж одномерный тем более) так резко поворачивать не умеет. Т.е. двумерный умеет, и даже излом дать может, но тогда без других перегибов.

 Профиль  
                  
 
 Re: Сплайн Эрмита прыгает куда-то..
Сообщение29.07.2016, 17:02 
Заслуженный участник
Аватара пользователя


23/07/08
10894
Crna Gora
Postscripter
Могут быть разные штучки, связанные с дискретностью, но: полином третьей степени так, как Вы описываете, вести себя не может. Тут простейшие соображения. У Вас на графике перегиб (примерно посередине между опорными точками) — значит, там $y''(x)=0$. Правее видим локальный максимум — значит, там $y''(x)<0$. Третья производная у полинома третьей степени константа. Значит, вторая производная зависит от $x$ линейно. Значит, если она уменьшилась от точки перегиба к локальному максимуму и стала отрицательной, то будет и дальше уменьшаться (с постоянной скоростью по $x$). Значит, первая производная, ставши отрицательной правее от максимума, тоже будет уменьшаться и дальше, но уже всё быстрее.

 Профиль  
                  
 
 Re: Сплайн Эрмита прыгает куда-то..
Сообщение29.07.2016, 17:25 


17/01/11
17
Цитата:
полином третьей степени так, как Вы описываете, вести себя не может. Тут простейшие соображения.

Цитата:
так резко поворачивать не умеет

О да, алгебра и начала анализа, 11 класс.. золотое время! И моя любимая тема. Я понял соображения, но не понял, что именно в поведении полинома криминального? Всё соответствует как раз рассуждениям. От максимума вправо график выпуклый "вверх", значит производная уменьшается всё быстрее, да. До следующей опорной точки.

Хотя там и уменьшаться нечему. Точки расположены на одной линии, я их выставил мышкой на глаз конечно, но на всём участке производная равна примерно минус двум (что и подставляется в приведённую выше формулу).

Я в понедельник более подробно всё обрисую.

 Профиль  
                  
 
 Re: Сплайн Эрмита прыгает куда-то..
Сообщение29.07.2016, 18:24 
Аватара пользователя


31/10/08
1244
Postscripter
Цитата:
Есть большие сомнения, что это его нормальное поведение. Наверное, что-то не так...?
Это нормальное поведении для Эрмитового сплана. НО!
Сшивка кусков сплайна проведена неправильно видны переломы. Устроите проблему со сшивкой сплайн будет выглядеть лучше.
Хотите чтобы сплан не имел горбов пользуйтесь экстраполяцией или фильтрующими сплайнами. Кстати существует фильтрующий сплайн Эрмита(Хэрмита)

 Профиль  
                  
 
 Re: Сплайн Эрмита прыгает куда-то..
Сообщение29.07.2016, 20:24 
Заслуженный участник


11/05/08
32166
Postscripter в сообщении #1140855 писал(а):
но на всём участке производная равна примерно минус двум (что и подставляется в приведённую выше формулу).

Вы уж выберите что-то одно -- или "в приведённую выше формулу", или

Postscripter в сообщении #1140841 писал(а):
у меня можно сказать одномерный x=x(t)

И подставляется у Вас не минус два, а что-то порядка минус восьми. Это на маленьких отрезках, а на примыкающих больших -- наоборот, порядка (-0.8).

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

 Профиль  
                  
 
 Re: Сплайн Эрмита прыгает куда-то..
Сообщение29.07.2016, 22:12 
Заслуженный участник
Аватара пользователя


11/03/08
9883
Москва
У Вас что-то с вычислением производных. Они намного больше "средних наклонов левого и правого отрезков". Я бы предположил, что Вы со взвешиванием что-то перемудрили. Вам нужно проехать отрезок с небольшой средней скоростью, но Вы отчего-то потребовали въезжать на него и выезжать с огромной, и приходиться не только резко тормозить, но даже возвращаться назад для разгона к высокой скорости выезда. Проверьте значения производных.

 Профиль  
                  
 
 Re: Сплайн Эрмита прыгает куда-то..
Сообщение31.07.2016, 11:20 
Модератор
Аватара пользователя


16/02/11
3788
Бурашево
Postscripter в сообщении #1140841 писал(а):
Нет, не противоречит. В книжке двухмерный вектор r=r(t), у меня можно сказать одномерный x=x(t) - разницы нет.
Прежде чем выкладывать там что-то с флешки, всё же обратите внимание, что, как вам уже писали выше, разница есть. Формула, скан которой вы привели, даёт параметрическое описание сплайн-кривой, которая представляет собой геометрическое место точек, координаты которых $(x,y)$ удовлетворяют уравнениям $x=x(t)$ и $y=y(t)$, где $t$ - параметр, но при этом сами эти зависимости от параметра не обязаны быть сплайн-кривыми и/или вести себя как-либо геометрически предсказуемо, поскольку от них этого не требуется при формировании сплайна.

Возможно будет лучше открыть вашу хорошую книжку страниц на 100 раньше и найти там материал по одномерным эрмитовым сплайнам.

 Профиль  
                  
 
 Posted automatically
Сообщение31.07.2016, 11:37 


20/03/14
12041
 i  Тема перемещена из форума «Помогите решить / разобраться (М)» в форум «Карантин»
по следующим причинам:

- неправильно набраны формулы (краткие инструкции: «Краткий FAQ по тегу [math]» и видеоролик Как записывать формулы);
post1140837.html#p1140837

Исправьте все Ваши ошибки и сообщите об этом в теме Сообщение в карантине исправлено.
Настоятельно рекомендуется ознакомиться с темами Что такое карантин и что нужно делать, чтобы там оказаться и Правила научного форума.

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

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



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

Сейчас этот форум просматривают: YandexBot [bot]


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

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