2014 dxdy logo

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

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


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


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



Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Posted automatically
Сообщение01.08.2016, 10:09 


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

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


11/05/08
32166
profrotter в сообщении #1141092 писал(а):
но при этом сами эти зависимости от параметра не обязаны быть сплайн-кривыми и/или вести себя как-либо геометрически предсказуемо, поскольку от них этого не требуется при формировании сплайна.

Я, кажется, понял, как это ТС удалось сделать. Он слишком доверчиво отнёсся к книжке Голованова, который при ближайшем рассмотрении оказался несколько разгильдяем.

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

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

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

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


17/01/11
17
Цитата:
Но он решает её бесчестно

А он её вообще не решает, сразу даёт ответ) Вот что всегда бесило в математике и математиках - знаменитое "...откуда очевидно", когда нифига не очевидно.. Но, в защиту автора, есть контингент, которым как раз надо покрасивше - программисты-прикладники (целевая аудитория издания), и я в их числе. А для вывода этой формулы, краем уха видел, там вроде какие-то сумасшедшие матричные преобразования..... простого вывода нигде не нашёл.

Кстати, пока тема была в карантине, пришло сообщение от Евгений Машеров, и ведь помогло! Действительно, там есть ремарка, что производная считается по новому введённому параметру w, который от точки к точке меняется в пределах $w\in[0..1]$. Соотв. формула верна для интервалов шагом в 1. А в других случаях нужно использовать более общую, например, из википедии, где производная домножена на длину интервала $t_{i+1}-t_i$.

Хотел бы прикрепить графики картинками, но не даёт. Можно поверить на слово, ну или вот:
Общий план http://pp.vk.me/c633819/v633819999/3a9d4/WJ2i-4r3RlA.jpg
Увеличено http://pp.vk.me/c633819/v633819999/3a9cb/-COnPK02F2s.jpg
Ляпота.. Спасибо, товарищи!

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


20/03/14
12041
 i  Postscripter
Для выборочного цитирования выделяйте нужный фрагмент и используйте кнопку "Вставка".

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


11/03/08
9883
Москва
Повторяю текст из ЛС:
Цитата:
Приведенная Вами формула получена для аргумента, меняющегося от 0 до 1. Она включает в себя четыре слагаемых, являющихся полиномами третьего порядка и выбранных так, что в точках 0 и 1 их значения и значения производных равны все, кроме одного, нулю, но одно слагаемое в точке 0 равно 1, другое слагаемое имеет в точке 0 равную единице производную, третье равно 1 в точке 1, четвёртое в точке 1 имеет производную 1. Тогда, умножив первое слагаемое на значение аппроксимируемой функции в точке 0, второе на значение производной в точке 0, третье на значение функции в точке 1, четвёртое на значение производной в этой точке и сложив их, получим полином третьего порядка, который в точках 0 и 1 имеет значения и значения производных равные таковым аппроксимируемой функции.
Выбор точек 0 и 1 упростил выкладки, так что для применения аргумент приводят к этому интервалу, вычтя начальную точку интервала и разделив на его длину. При этом значения функции не меняются, однако значения производных надо брать иные, не рассчитанные по исходной функции, а умноженные на длину интервала. У Вас это не делается, а поскольку интервал мал, умножать надо было на малое число, то из-за невыполнения этого значения производных резко завышены. Поэтому Ваша кривая аппроксимацияи слишком резко опускается вниз, и, чтобы придти к значению на конечном интервале (где также завышенное значение производной), кривая проскакивает вниз, тормозит и возвращается, чтобы вновь "рухнуть" с чрезмерной скоростью (слишком большой величиной производной).
Для приведения от единичного к произвольному интервалу, таким образом, следует домножить значения производных на длину интервала.
https://en.wikipedia.org/wiki/Cubic_Hermite_spline

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


11/05/08
32166
Postscripter в сообщении #1141356 писал(а):
А он её вообще не решает, сразу даёт ответ)

Он решает, но в извращённой форме. Т.е. в перевёрнутой. Он сначала выписывает ответ через базисные многочлены $\alpha_i(w),\ \beta_i(w)$ и лишь потом объясняет, зачем нужны именно такие многочлены. Затем, что у них именно такие граничные условия, после чего предыдущая формула становится очевидной. И да, он честно говорит, что производные в этих граничных условиях берутся по $w$; бесчестие же в том, что для производных сплайна так и остаётся обозначение $q_i$, что предполагает дифференцирование по старому $t$.

Между прочим, его замечательную формулу очень легко привести в чувство: надо просто каждую $\beta_i(w)$ дополнительно умножить на $(t_{i+1}-t_i)$, и тогда получится ровно то, что было обещано с самого начала.

Postscripter в сообщении #1141356 писал(а):
А для вывода этой формулы, краем уха видел, там вроде какие-то сумасшедшие матричные преобразования.....

Напротив, всё очень просто. Голованов абсолютно прав в том, что ищет решение именно в таком виде -- это просто напрашивается (другое дело, как он потом это всё организовал и оформил). Вопрос лишь, как найти требуемые альфы и беты. Но после того, как он поставлен, это уже не вопрос. Логически проще всего выписать каждый из многочленов в общем виде, потребовать выполнения всех четырёх граничных условий и решить полученную систему уравнений на коэффициенты многочлена. Технически же проще подойти к делу сознательнее. Например, по условию у $\beta_0(w)$ должен быть двукратный корень в единице и однократный в нуле, откуда сразу же $\beta_0(w)=A\cdot w(w-1)^2$; теперь из $\beta_0'(0)=1$ практически в уме получаем $A=1$. С $\alpha_0$ чуть сложнее -- заранее ясно лишь, что $\alpha_0=(Aw+B)(w-1)^2$. Но тогда из $\alpha_0(0)=1$ сразу следует $B=1$, после чего из $\big((Aw+1)(w-1)^2\big)'\Big|_0=0$ получаем $A=2$.

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


17/01/11
17
Вот бы в институте так доходчиво объясняли) Спасибо.

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

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



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

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


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

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