Многомерные сплайны тензорного продукта

Введение в многомерные сплайны тензорного продукта

Тулбокс обеспечивает (полиномиальные) функции сплайна в любом количестве переменных, как тензорные продукты одномерных сплайнов. Эти многомерные сплайны имеют обе стандартные формы, B-форму и ppform, а их конструкция и использование параллелей полностью аналогичны одномерным сплайнам, рассмотренным в предыдущих разделах, Строительство и Работа со сплайнами и Построение и Работа со сплайнами B-формы. Те же команды используются для их конструкции и использования.

Для простоты в следующем обсуждении рассматриваются просто двухмерные сплайны.

B-форма тензорных сплайнов продукта

Идея тензор-продукт очень проста. Если f является функцией x, а g является функцией y, то их тензор-произведение p (x,y): = f (x) g (y) является функцией x и y, т.е. двухмерная функция. В более общем плане, с s = (s 1..., <reservedrangesplaceholder13> <reservedrangesplaceholder12> + h) и t = (t 1..., <reservedrangesplaceholder8> <reservedrangesplaceholder7> + k) связывают узлом последовательности и <reservedrangesplaceholder5> <reservedrangesplaceholder4> (i = 1..., m; j = 1,... n) соответствующий массив коэффициентов, вы получаете двухмерный сплайн как

f(x,y)=i=1mj=1nB(x|si,...,si+h)B(y|tj,...,tj+k)aij

B-форма этого сплайна содержит массив ячеек {s, t} его последовательностей узлов, a массива коэффициентов, вектор чисел [m, n] и вектор порядков [h, k]. Команда

sp = spmak({s,t},a);

создает эту форму. Далее, fnplt, fnval, fnder, fndir, fnrfn, и fn2fm может использоваться для построения, вычисления, дифференцирования и интегрирования, уточнения и преобразования этой формы.

Конструкция с данными сетки

Вы, скорее всего, создадите такую форму, ища интерполяцию или аппроксимацию к данным с сеткой. Например, если Вы знаете значения z (i, j) =g (x (<reservedrangesplaceholder8>), y (<reservedrangesplaceholder6>)), <reservedrangesplaceholder5> =1: m, <reservedrangesplaceholder3> =1: n, некоторой функции g во всех точках в прямоугольной сетке, тогда, предполагая, что строго увеличивающаяся последовательность xудовлетворяет условиям Шёнберга-Уитни относительно вышеуказанных s последовательности узлов и что строго увеличивающаяся последовательность y удовлетворяет условиям Шёнберга-Уитни относительно вышеописанных t последовательности узлов, команды

sp=spapi({s,t},[h,k],{x,y},z);

создает уникальный двухмерный сплайн вышеописанной формы, который соответствует заданным значениям. Область команды fnplt(sp) дает вам быстрый график этой интерполяции. Область команды pp = fn2fm(sp,'pp') предоставляет вам форму ppform этого сплайна, которая, вероятно, является тем, что вы хотите, когда хотите вычислить сплайн в тонкой сетке ( (xx(i),yy(j))для i=1:M, j=1:N), по команде:

values = fnval(pp,{xx,yy});

ppform сплайнов Продукт

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

Пример: The Mobius Band

Вот пример поверхности, построенной как 3-D-valued двухмерный сплайн. Поверхность - знаменитая группа Möbius, получаемая путём взятия длинной полосы бумаги и склеивания её узких концов вместе, но с поворотом. Рисунок получается следующими командами:

x = 0:1; y = 0:4; h = 1/4; o2 = 1/sqrt(2); s = 2; ss = 4;
v(3,:,:) = h*[0, -1, -o2, 0, o2, 1, 0;0, 1, o2, 0, -o2, -1, 0];
v(2,:,:) = [ss, 0, s-h*o2, 0, -s-h*o2, 0, ss;...
            ss, 0, s+h*o2, 0,-s+h*o2, 0, ss];
v(1,:,:) = s*[0, 1, 0, -1+h, 0, 1, 0; 0, 1, 0, -1-h, 0, 1, 0];
cs = csape({x,y},v,{'variational','clamped'});
fnplt(cs), axis([-2 2 -2.5 2.5 -.5 .5]), shading interp
axis off, hold on
values = squeeze(fnval(cs,{1,linspace(y(1),y(end),51)}));
plot3(values(1,:), values(2,:), values(3,:),'k','linew',2)
view(-149,28), hold off

Möbius Band Made by Vector-Valued бивариатная сплайн интерполяция

Похожие темы