Обычно сплайн строится из некоторой информации, такой как значения функции и/или производные, или как приблизительное решение некоторого обыкновенного дифференциального уравнения. Но также можно создать сплайн с нуля, предоставив его последовательность узлов и последовательность коэффициентов команде spmak.
Для примера, если вы вводите
sp = spmak(1:10,3:8);
Вы подаете однородную последовательность узлов 1:10 и последовательность коэффициентов 3:8. Поскольку существует 10 узлов и 6 коэффициентов, порядок должен быть 4 (= 10 - 6), т.е. вы получаете кубический сплайн. Команда
fnbrk(sp)
распечатывает составные части B-формы этого кубического сплайна следующим образом:
knots(1:n+k) 1 2 3 4 5 6 7 8 9 10 coefficients(d,n) 3 4 5 6 7 8 number n of coefficients 6 order k 4 dimension d of target 1
Далее, fnbrk может использоваться, чтобы поставить каждую из этих частей отдельно.
Но точка функциональности Curve Fitting Toolbox™ сплайна в том, что не должно быть никакой необходимости, чтобы вы искали эти детали. Вы просто используете sp как аргумент к командам, которые вычисляют, дифференцируют, интегрируют, преобразуют или строят график сплайна, описание которого содержится в sp.
Для сплайна работы доступны следующие команды. Есть spmak и fnbrk чтобы составить сплайн и разобрать его снова. Использовать fn2fm для преобразования из B-формы в ppform. Можно вычислять, дифференцировать, интегрировать, минимизировать, находить нули, график, уточнять или избирательно экстраполировать сплайн с помощью fnval, fnder, fndir, fnint, fnmin, fnzeros, fnplt, fnrfn, и fnxtr.
Существует пять команд для генерации последовательностей узлов:
augknt для обеспечения граничных узлов, а также управления кратностью внутренних узлов
brk2knt для подачи последовательности узлов с заданными кратностями
aptknt для предоставления последовательности узлов для сплайна пространства заданного порядка, которая подходит для интерполяции в заданных сайтах данных
optknt для обеспечения оптимальной последовательности узлов для интерполяции в заданных сайтах
newknt для последовательности узлов, возможно, более подходящей для аппроксимации функции
В сложение существует:
Чтобы отобразить сплайн с заданной двумерной последовательностью коэффициентов и равномерной последовательностью узлов, используйте spcrv.
Можно также написать свои собственные команды конструкции сплайнов, в этом случае вам нужно будет знать следующее. Конструкция сплайна, удовлетворяющего некоторым условиям интерполяции или приближения, обычно требует матрицы коллокации, т.е. матрицы, которая в каждой строке содержит последовательность чисел Dr<reservedrangesplaceholder7> <reservedrangesplaceholder6>, k (τ), т.е. производная <reservedrangesplaceholder4> th в τ B-сплайна <reservedrangesplaceholder3> th, для всего j, для немного r и некоторое место τ. Такая матрица обеспечивается spcol. Необязательный аргумент позволяет, чтобы эта матрица была задана spcol в пространственном сплайне -almost-block диагонали -форме или как MATLAB® разреженная матрица. Его можно кормить на slvblk, команду для решения линейных систем с матрицей диагональ коэффициентов. Если вам интересно посмотреть как spcol и slvblk используются в этом тулбоксе, посмотрите на команды spapi, spap2, и spaps.
В сложение существуют стандартные программы для построения кубических сплайнов. csapi и csape обеспечивают кубическую сплайн интерполяцию в узлах к данным, используя не-а-узел и различные другие граничные условия, соответственно. Параметрическая кубическая сплайн через заданные точки обеспечивается cscvn. Кубический сглаживающий сплайн построен в csaps.
Как еще один простой пример,
points = .95*[0 -1 0 1;1 0 -1 0]; sp = spmak(-4:8,[points points]);
обеспечивает плоскую, квартальную, сплайн кривую, средняя часть которой является довольно хорошим приближением к кругу, как показано на графике на следующей странице. Это сгенерировано последующим
plot(points(1,:),points(2,:),'x'), hold on fnplt(sp,[0,4]), axis equal square, hold off
Вставка дополнительных контрольных точек сделал бы визуально идеальный круг.
Вот более подробная информация. Сгенерированная сплайн имеет вид8j = 1B j, 5 a (:, j), с - 4:8однородная последовательность узлов и с ее контрольными точками a (:, j) последовательность (0, α), (-α, 0), (0, -α), (α, 0), (0, α), (-α, 0), (0, -α), (α, 0) с α = 0,95. На самом деле нанесена только часть кривой между значениями параметров 0 и 4.
Чтобы почувствовать, насколько близка к округлости эта часть кривой, вычислите ее беззнаковую кривизну. Кривизна в точке t (t) = (x (t), y (t)) пространственной кривой, может быть вычислена из формулы
в котором x ', x ″, y' и y "являются первой и второй производными кривой относительно используемого параметра (t). Обработайте плоскую кривую как пространственную кривую в (x, y) -плане, следовательно, получите максимальное и минимальное значение ее кривизны в 21 точках следующим образом:
t = linspace(0,4,21);zt = zeros(size(t));
dsp = fnder(sp); dspt = fnval(dsp,t); ddspt = fnval(fnder(dsp),t);
kappa = abs(dspt(1,:).*ddspt(2,:)-dspt(2,:).*ddspt(1,:))./...
(sum(dspt.^2)).^(3/2);
[min(kappa),max(kappa)]
ans =
1.6747 1.8611
Так, хотя кривизна не совсем постоянна, она близка к 1/радиусу окружности, как видно из следующего вычисления:
1/norm(fnval(sp,0))
ans =
1.7864
Сплайн Приближения к Кругу; Контрольные точки отмечены x
