# aptknt

Acceptable knot sequence

## Syntax

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

## Description

`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)`).

## Examples

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.

## Cautionary Note

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.

## Algorithms

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.