Тулбокс обеспечивает (полиномиальные) функции сплайна в любом количестве переменных как продукты тензора одномерных сплайнов. Эти многомерные сплайны прибывают и в стандартные формы, B-форму и в ppform и их конструкцию и используют параллели полностью тот из одномерных сплайнов, обсужденных в предыдущих разделах, Создавая и работая со Сплайнами ppform и Создавая и работая со Сплайнами B-формы. Те же команды используются для их конструкции и использования.
Для простоты следующее обсуждение имеет дело только с двумерными сплайнами.
Идея продукта тензора очень проста. Если 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) соответствующий массив коэффициентов, вы получаете двумерный сплайн как
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 такого двумерного сплайна включает, аналогично, массив ячеек последовательностей пропуска, многомерного массива коэффициентов, вектора частей номера и вектора полиномиальных порядков. К счастью, тулбокс настраивается таким способом, которым обычно нет никакой причины для вас коснуться себя этими деталями любой формы. Вы используете интерполяцию, приближение, или сглаживающий, чтобы создать сплайны, и затем использовать 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
Группа Мёбиуса, сделанная интерполяцией двумерного сплайна с векторным знаком