Main Content

Acceptable knot sequence

`knots = aptknt(tau,k) `

[knots,k] = aptknt(tau,k)

`knots = aptknt(tau,k) `

returns a knot
sequence suitable for interpolation at the data sites `tau`

by
splines of order k with that knot sequence, provided `tau`

has at
least `k`

entries, is nondecreasing, and satisfies
`tau(i)`

<`tau(i+k-1)`

for all
`i`

. In that case, there is exactly one spline of order
`k`

with knot sequence `knots`

that matches
given values at those sites. This is so because the sequence
`knots`

returned satisfies the Schoenberg-Whitney
conditions

knots(i) < tau(i) < knots(i+k), i=1:length(tau)

with equality only at the extreme knots, each of which occurs with exact
multiplicity `k`

.

If `tau`

has fewer than `k`

entries, then
`k`

is reduced to the value `length(tau)`

. An
error results if `tau`

fails to be nondecreasing and/or
`tau(i)`

equals `tau(i+k-1)`

for some
`i`

.

`[knots,k] = aptknt(tau,k) `

also returns the
actual `k`

used (which equals the smaller of the input
`k`

and `length(tau)`

).

If `tau`

is equally spaced, e.g., equal to
`linspace(a,b,n)`

for some `n`

>=4, and
`y`

is a sequence of the same size as `tau`

,
then `sp = spapi(aptknt(tau,4),tau,y)`

gives the cubic spline
interpolant with the not-a-knot end condition. This is the same cubic spline as
produced by the command `spline(tau,y)`

, but in B-form rather than
ppform.

If `tau`

is very nonuniform, then use of the resulting knot
sequence for interpolation to data at the sites `tau`

may lead to
unsatisfactory results.

The `(k-1)`

-point averages
`sum(tau(i+1:i+k-1))/(k-1)`

of the sequence
`tau`

, as supplied by `aveknt(tau,k)`

, are
augmented by a `k`

-fold `tau(1)`

and a
`k`

-fold `tau(end)`

. In other words, the
command gives the same result as
`augknt([tau(1),aveknt(tau,k),tau(end)],k)`

, provided
`tau`

has at least `k`

entries and ```
k
```

is greater than 1.