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
10093
Москва
Повторяю текст из ЛС:
Цитата:
Приведенная Вами формула получена для аргумента, меняющегося от 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

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



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

Сейчас этот форум просматривают: schmetterling


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

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