Преобразуйте в указанную форму
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 дешевле для оценки.
Преобразование из полиномиальной формы в соответствующую рациональную форму возможно только в том случае, если функция в полиномиальной форме имеет векторное значение, и в этом случае её последний компонент обозначается как знаменатель. Преобразование из рациональной формы в соответствующую полиномиальную форму просто отменяет этот процесс путем переосмысления знаменателя функции в рациональной форме как дополнительного компонента кусочного полинома функции.
Преобразование в или из формы в настоящее время невозможно.
Если 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 interior пропуска. Если функция в 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, команда utility sprpp
используется для преобразования B-формы всех полиномиальных частей в их локальную степень с помощью повторной вставки узла в левую конечную точку.
Преобразование из B-формы в BBform осуществляется путем вставки каждого узла достаточно раз, чтобы увеличить его кратность к порядку сплайна.
Преобразование из ppform в B-форму использует двойные функционалы, обсуждаемые в. Без дополнительной информации такое преобразование должно установить фактическую гладкость на каждом внутреннем пропуске функции в f.