Бикубическая интерполяция

syv7

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

RZ3ARO

Книга Богачева "Методы приближения функций". Есть почти у всего мехмата. Вкратце - вначале надо научиться приближать функцию одного переменного. А потом - тензорное произведение.

syv7

а по-проще как-нить можно?
как я понимаю, значение функции между узлами определяется так (пишу на сях, тех не знаю )


for (x=0;x<n;x++)
for (y=0;y<m;y++)
result+=array[x][y]*f(xx-x,yy-y);


xx,yy-точка между узлами.
вот вопрос как раз в задании функции f(x,y).
из общих соображений понятно, что f(0,0)=1, f(1,0)=f(-1,0)=f(0,1)=f(0,-1)=0.
как правильно задается эта функция?

kachokslava

Если функция f - кубический многочлен от (x,y
то у функции f 10 (десять!) коэффициентов. а у тебя только в пяти точках закреплены значения.

syv7

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

kachokslava

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

syv7

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

kachokslava

зачем тебе бикубическая? чтобы гладкость была?
сколько тебе гладкости надо? C2?
тогда тебе СЛУ придётся решать порядка N*N (N- ширина или высота сетки)
правда они ленточные - на три-четыре диагонали..
Оставить комментарий
Имя или ник:
Комментарий: