Javascript must be enabled in your browser to use this page.
Please enable Javascript under your Tools menu in your browser.
Once javascript is enabled Click here to go back to �нтеллектуальная Кобринщина

Work with Spline Functions - Wolfram Mathematica

Сплайн-функции

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

Mathematica содержит два сплайновых базиса: BSplineBasis (B-сплайновый базис) и BernsteinBasis (базис Бернштейна). Подобно другим специальным функциям, они могут быть оценены численно:

In[3]:=

WorkWithSplineFunctionsRU_1.gif

Out[3]=

WorkWithSplineFunctionsRU_2.gif

In[84]:=

WorkWithSplineFunctionsRU_3.gif

Out[84]=

WorkWithSplineFunctionsRU_4.gif

Вы можете наглядно отобразить базисные функции при помощи команды Plot:

In[3]:=

WorkWithSplineFunctionsRU_5.gif

Out[3]=

WorkWithSplineFunctionsRU_6.gif

Базисная функция может быть разложена командой PiecewiseExpand (Кусочное Разложение) для отображения ее символьного представления:

In[42]:=

WorkWithSplineFunctionsRU_7.gif

Out[42]=

WorkWithSplineFunctionsRU_8.gif

Функция BSplineBasis поддерживает всесторонний контроль над базисными функциями. Например, следующий график иллюстрирует семейство квадратичных B-сп&# 1083;айновых базисных функций, образуемое путем изменения второго аргумента от 0 до любого положительного целого:

In[4]:=

WorkWithSplineFunctionsRU_9.gif

Out[4]=

WorkWithSplineFunctionsRU_10.gif

Неравномерный B-сплайновый базис может быть представлен путем задания неубывающей последовательности действительных чисел, называемых узлами. Последовательность узлов определяет набор B-сплайнов. Каждый конкретный базис может быть задан вторым аргументом, в диапазоне от 0 до m d 2, где m - длина последовательности узлов, а d - степень B-сплайна:

In[5]:=

WorkWithSplineFunctionsRU_11.gif

Out[6]=

WorkWithSplineFunctionsRU_12.gif

    

Базисные функции для более высоких размерностей могут быть получены путем тензорного произведения. На графике показана равномерная бикубическая B-сплайновая базисная функция:

In[7]:=

WorkWithSplineFunctionsRU_13.gif

Out[7]=

WorkWithSplineFunctionsRU_14.gif

    

B-сплайновые множества, такие как кривые и поверхности, могут быть представлены как сумма произведений  B-сплайновых базисных функций и точек области значений. Например, типичная B-сплайновая кривая в 2D может быть представлена с помощью функции Dot (Произведение векторов, матриц и тензоров):

In[49]:=

WorkWithSplineFunctionsRU_15.gif

Визуально, кривая может быть отображена с помощью команды ParametricPlot (Параметрический график):

In[52]:=

WorkWithSplineFunctionsRU_16.gif

Out[52]=

WorkWithSplineFunctionsRU_17.gif

BSplineFunction обеспечивает удобный и эффективный способ представления B-сплайновой кривой:

In[53]:=

WorkWithSplineFunctionsRU_18.gif

Out[53]=

WorkWithSplineFunctionsRU_19.gif

Как и в случае с InterpolatingFunction, результат BSplineFunction может быть оценен для точки в пределах заданной области определения, или отображен графически с помощью команды ParametricPlot:

In[54]:=

WorkWithSplineFunctionsRU_20.gif

Out[54]=

WorkWithSplineFunctionsRU_21.gif

In[56]:=

WorkWithSplineFunctionsRU_22.gif

Out[56]=

WorkWithSplineFunctionsRU_23.gif

Производная от BSplineFunction является BSplineFunction на единицу меньшей сепени. В следующем примере, с помощью производной показаны касательные векторы поверх B-сплайновой кривой:

In[57]:=

WorkWithSplineFunctionsRU_24.gif

Out[57]=

WorkWithSplineFunctionsRU_25.gif

In[71]:=

WorkWithSplineFunctionsRU_26.gif

Out[71]=

WorkWithSplineFunctionsRU_27.gif

    

Также, с помощью BSplineFunction могут отображаться B-сплайновые поверхности, заданные массивом 3D точек. График таких поверхностей строится с помощью функции ParametricPlot3D:

In[72]:=

WorkWithSplineFunctionsRU_28.gif

Out[73]=

WorkWithSplineFunctionsRU_29.gif

In[75]:=

WorkWithSplineFunctionsRU_30.gif

Out[75]=

WorkWithSplineFunctionsRU_31.gif

В качестве второго аргумента функции BSplineFunction может быть задано число параметров. Например, так создается двумерная B-сплайновая функция:

In[12]:=

WorkWithSplineFunctionsRU_32.gif

Out[12]=

WorkWithSplineFunctionsRU_33.gif

Так как эта функция больше [0,1]?[0,1], для ее отображения можно использовать функцию Plot3D:

In[13]:=

WorkWithSplineFunctionsRU_34.gif

Out[13]=

WorkWithSplineFunctionsRU_35.gif