Приемлемая последовательность узла
knots = aptknt(tau,k)
[knots,k] = aptknt(tau,k)
knots = aptknt(tau,k)
возвращает последовательность узла, подходящую для интерполяции на сайтах данных tau
сплайнами порядка k с той последовательностью узла, если tau
имеет, по крайней мере, записи k
, не уменьшается и удовлетворяет tau(i)
<tau(i+k-1)
для всего i
. В этом случае существует точно один сплайн порядка k
с последовательностью узла knots
, который совпадает с данными значениями на тех сайтах. Это так, потому что последовательность возвращенный knots
удовлетворяет условия Шенберга-Уитни
knots(i) < tau(i) < knots(i+k), i=1:length(tau)
с равенством только на уровне экстремальных узлов, каждый из которых происходит с точной кратностью k
.
Если tau
имеет меньше, чем записи k
, то k
уменьшается до значения length(tau)
. Ошибка заканчивается, если tau
не удается не уменьшиться, и/или tau(i)
равняется tau(i+k-1)
для некоторого i
.
[knots,k] = aptknt(tau,k)
также возвращает фактический используемый k
(который равняется меньшему из входа k
и length(tau)
).
Если tau
равномерно распределен, например, равен linspace(a,b,n)
для некоторого n
> =4, и y
является последовательностью, одного размера как tau
, то sp = spapi(aptknt(tau,4),tau,y)
дает кубический сплайн interpolant с граничным условием не-узла. Это - тот же кубический сплайн, как произведено командой spline(tau,y)
, но в B-форме, а не ppform.
Если tau
очень неоднороден, то использование получившейся последовательности узла для интерполяции к данным на сайтах tau
может привести к неудовлетворительным результатам.
(k-1)
- средние значения точки, sum(tau(i+1:i+k-1))/(k-1)
последовательности, tau
, как предоставлено aveknt(tau,k)
, увеличивается k
- сворачивает tau(1)
и k
- сворачивают tau(end)
. Другими словами, команда дает тот же результат как augknt([tau(1),aveknt(tau,k),tau(end)],k)
, если tau
имеет, по крайней мере, записи k
, и k
больше, чем 1.