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

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

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

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

B-форма сплайнов продукта Tensor

Идея продукта тензора очень проста. Если f является функцией x, и g является функцией y, то их продукт тензора p (x,y): = f (x) g (y) является функцией x и y, т.е. двумерной функции. В более общем плане, с s = (s 1..., s m +h) и t = (t 1..., t n +k) связывают узлом последовательности и a ij (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 может использоваться, чтобы построить, оценить, дифференцировать и интегрировать, совершенствовать, и преобразовать эту форму.

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

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

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

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

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

ppform Сплайнов продукта Tensor

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

Пример: лист Мебиуса

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

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

Группа Мёбиуса, сделанная интерполяцией двумерного сплайна с векторным знаком

Похожие темы