Одномерный сплайн f задаётся его неразрешающей
последовательностью узлов t
и своей последовательностью B-сплайн коэффициентов
a
. Обсуждение многомерных сплайнов смотрите в разделе «Многомерные сплайны продукта». Коэффициенты могут быть (column-) векторами, матрицами, даже ND-массивами. Когда коэффициенты являются 2-векторами или 3-векторами, f является кривой в R2 или R3 и коэффициенты называются
контрольными точками для
кривой.
Грубо говоря, такой сплайн является кусочно-полиномиальным определенного порядка и с пропусками t
(<reservedrangesplaceholder1>). Но узлы отличаются от пропусков в том, что они могут повторяться, то есть t
не обязательно строго увеличивать. Получившиеся узловые кратности управляют плавностью сплайна через узлы, как подробно описано ниже.
С [d,n] = size(a)
, и n+k = length(t)
сплайн имеет порядок
k. Это означает, что его полиномиальные части имеют степень <
k
. Для примера кубический сплайн является сплайном порядка 4, потому что для задания кубического полинома требуется четыре коэффициента.
Эти четыре элемента, t, a, n и k, составляют B-форму сплайн- f.
Это означает, явно, что
с Bi,k=B(·|t(i:i+k)) i B-сплайна порядка k
для заданной последовательности узлов t
, т.е. B-сплайн с узлами t(i),...,t(i+k). Основной интервал этой B-формы является интервальным [t(1)..t(n+k)]. Это интервал по умолчанию, над которым сплайн в B-форме нанесен командой fnplt
. Обратите внимание, что сплайн в B-форме равен нулю вне его основного интервала, в то время как после преобразования в ppform через fn2fm
обычно это не так, потому что вне его основного интервала кусочный полином определяется расширением его первой или последней полиномиальной части. В частности, функция в B-форме может иметь переходы по значению и/или одну из своих производных не только через свои внутренние узлы, т.е. поперек t (i) с t(1)<t(i)<t(n+k), но и поперек его концевых узлов, t (1) и t (n + k).
Для B-формы сплайна базовых блоков B-сплайны. A B-сплайн порядка 4 и четыре кубических полиномов, из которых он сделан, показывают картину такого B-сплайна, того самого, с последовательностью узлов [0 1.5 2.3 4 5]
, следовательно, порядка 4, вместе с полиномами, кусочки которых составляют B-сплайн. Информация для этого рисунка может быть сгенерирована командой
Результирующие: B-сплайн с узлами t (i) ≤··· ≤ t (i + k) положителен на интервале (t (i).. t (i + k)) и равен нулю за пределами этого интервала. Это кусочный полином порядка k
с пропусков на сайтах t (i),..., t (i + k). Эти узлы могут совпадать, и точная кратность управляет плавностью, с которой две полиномиальные части соединяются там.
Стенография
является одним из нескольких способов указать, что f является сплайном порядка k
с последовательностью узлов t
, т.е. линейная комбинация B-сплайнов порядка k
для последовательности узлов t
.
Слово осторожности: Термин B-сплайн был экспроприирован сообществом Computer-Aided Geometric Design (CAGD), чтобы означать, что здесь называется сплайн в B-форме, с несчастным результатом, что в любом обсуждении между математиками/теоретиками аппроксимации и людьми в CAGD, теперь всегда нужно проверить в каком смысле
Правило такое
кратность узла + кратность условия = порядок
Все B-сплайны третьего порядка для определенной последовательности узлов с различными кратностями узлов
Для примера для B-сплайна порядка 3 простой узел будет означать два условия гладкости, то есть непрерывность функции и первую производную, в то время как двойной узел оставит только одно условие гладкости, то есть только непрерывность, и тройной узел не оставит условия гладкости, то есть даже функция будет прерывистой.
Все B-сплайны третьего порядка для определенной последовательности узлов с различными кратностями узлов показывают картину всех B-сплайнов третьего порядка для определенной последовательности таинственных узлов t
. Эти пропуски обозначаются вертикальными линиями. Для каждого пропуска попробуйте определить его кратность в последовательности узлов (это 1,2,1,1,3), а также его кратность как узел в каждом из B-сплайнов. Для примера второго пропуска имеет кратность 2, но появляется только с кратностью 1 в третьем B-сплайне, а не вообще, т.е. с кратностью 0, в последних двух B-сплайнах. Обратите внимание, что только один из B-сплайнов имеет простые узлы. Это единственный, имеющий три различные нетривиальные полиномиальные части. Обратите внимание также, что вы можете сказать кратность последовательности узлов по количеству B-сплайнов, ненулевая часть которых начинается или заканчивается там. Картинка генерируется следующим MATLAB® операторы, которые используют командную spcol
из этого тулбокса сгенерировать значения функций всех этих B-сплайнов в тонкой сети x
.
t=[0,1,1,3,4,6,6,6]; x=linspace(-1,7,81); c=spcol(t,3,x);[l,m]=size(c); c=c+ones(l,1)*[0:m-1]; axis([-1 7 0 m]); hold on for tt=t, plot([tt tt],[0 m],'-'), end plot(x,c,'linew',2), hold off, axis off
Дополнительные проиллюстрированные примеры приведены в примере «Конструкция и работа с B-формой». Можно также использовать графический интерфейс пользователя bspligui
изучить зависимость B-сплайна от его узлов экспериментально.
Правило «кратность узлов + условие кратность = порядок» имеет следующее следствие для процесса выбора последовательности узлов для B-формы сплайн. Предположим, что сплайн s должен иметь порядок <reservedrangesplaceholder3> с основным интервалом [a. b], и с внутренними пропусками ξ2 <·· · <ξ <reservedrangesplaceholder0>. Предположим , что, кроме того, при, сплайн является удовлетворение условий гладкости, то есть,
Затем соответствующие t последовательности узлов должны содержать пропуск в точности k - i раза, i = 2,..., l. В сложении он должен содержать две конечные точки, a и b, основного интервала ровно k раза. Это последнее требование может быть расслаблено, но стало стандартным. При этом выборе существует в точности один способ записи каждого сплайна со свойствами s описанными как взвешенная сумма B-сплайнов порядка k с узлами сегмент последовательности узлов t. Это является причиной B в B-сплайн: B-сплайны, по терминологии Шёнберга, являются основными сплайнами.
Например, если вы хотите сгенерировать B-форму кубического сплайна на интервале [1.. 3], с внутренними пропусками 1.5, 1.8, 2.6 и с двумя непрерывными производными, тогда подходящей последовательностью узлов будет следующая:
t = [1, 1, 1, 1, 1.5, 1.8, 2.6, 3, 3, 3, 3];
Это обеспечивается augknt([1, 1.5, 1.8, 2.6, 3], 4)
. Если бы вы хотели, вместо этого, разрешить угол в 1.8, то есть возможный переход первой производной там, вы бы утроили узел 1.8, то есть использовали
t = [1, 1, 1, 1, 1.5, 1.8, 1.8, 1.8, 2.6, 3, 3, 3, 3];
и это предусмотрено оператором
t = augknt([1, 1.5, 1.8, 2.6, 3], 4, [1, 3, 1] );