Преобразуйте в заданную форму
g = fn2fm(f,form)
sp = fn2fm(f,'B-',sconds)
fn2fm(f)
g = fn2fm(f,form)
описывает ту же функцию, как описан f
, но в форме, заданной вектором символов или строковым скаляром form
. Выбор для form
'B-'
, 'pp'
, 'BB'
, 'rB'
, 'rp'
, для B-формы, ppform, BBform и двух рациональных форм сплайна, соответственно.
B-форма описывает функцию как взвешенную сумму B-сплайнов данного порядка k для данной последовательности узла, и BBform (или, форма Бернстайна-Безира) является особым случаем, когда каждый узел в той последовательности появляется с максимальной кратностью, k. ppform описывает функцию в терминах ее локальных полиномиальных коэффициентов. B-форма хороша для построения и/или формирования функции, в то время как ppform является более дешевой, чтобы оценить.
Преобразование от полиномиальной формы до соответствующей рациональной формы возможно, только если функция в полиномиальной форме с векторным знаком, в этом случае ее последний компонент определяется как знаменатель. Преобразование от рациональной формы до соответствующей полиномиальной формы просто инвертирует этот процесс путем иного толкования знаменателю функции в рациональной форме как дополнительный компонент функции кусочного полинома.
Преобразование в или от stform не возможно в настоящее время.
Если form
'B-'
(и f
находится в ppform), затем фактическая гладкость функции в f
через каждый из его внутренних пропусков должен быть предположен. Это сделано путем взгляда, для каждого внутреннего пропуска, для первой производной, скачок которой через тот пропуск не мал по сравнению с размером той производной поблизости. Допуском по умолчанию, используемым в этом, является 1.e-12
.
sp = fn2fm(f,'B-',sconds)
разрешения вы, чтобы предоставить, как входной параметр sconds
, допуск (строго между 0 и 1), чтобы использоваться в преобразовании от ppform до B-формы.
В качестве альтернативы можно ввести sconds
как вектор с целочисленными записями, с, по крайней мере, столькими же записей сколько ppform в f
имеет внутренние пропуски. В этом случае, sconds(i)
задает количество условий гладкости, которые будут использоваться через i
внутренний пропуск th. Если функция в f
продукт тензора, затем sconds
, если дали, должен быть массив ячеек.
fn2fm(f)
преобразует возможно старую версию формы в ее текущую версию.
sp = fn2fm(spline(x,y),'B-')
дает интерполирующий кубический сплайн, обеспеченный MATLAB® команда spline
, но в B-форме, а не в ppform.
p0 = ppmak([0 1],[3 0 0]); p1 = fn2fm(fn2fm(fnrfn(p0,[.4 .6]),'B-'),'pp');
дает p1
идентичный p0
(до округления в коэффициентах), поскольку сплайн не имеет никакого разрыва ни в какой производной через дополнительные пропуски, введенные fnrfn
, следовательно преобразование в B-форму игнорирует эти дополнительные пропуски, и преобразование в ppform не сохраняет кратности узла (как введенная кратность узла, преобразованием в B-форму, в конечных точках основного интервала сплайна).
При движении от B-формы до ppform, любого разрыва скачка на уровне первого и последнего узла, t(1)
или t(end)
, будет потерян, поскольку ppform полагает, что f задан вне его основного интервала расширением первого, соответственно, последней полиномиальной части. Например, в то время как sp=spmak([0 1],1)
дает характеристическую функцию интервала [0
..1],
pp=fn2fm(spmak([0 1],1),'pp')
постоянный полином, x | → 1.
Для многомерного (продукт тензора) функционируют, одномерные алгоритмы применяются в каждой переменной.
Для преобразования из B-формы (или BBform) к ppform, служебная команда sprpp
используется, чтобы преобразовать B-форму всех полиномиальных частей к их локальной форме степени, с помощью повторенной вставки узла в левой конечной точке.
Преобразование от B-формы до BBform выполняется путем вставки каждого узла достаточно раз, чтобы увеличить его кратность до порядка сплайна.
Преобразование от ppform до B-формы использует двойной functionals, обсужденный в. Без дополнительной информации такое преобразование должно установить фактическую гладкость через каждый внутренний пропуск функции в f
.