# newknt

New break distribution

## Syntax

```newknots = newknt(f,newl) newknt(f) [...,distfn] = newknt(...) ```

## Description

`newknots = newknt(f,newl) ` returns the knot sequence whose interior knots cut the basic interval of `f` into `newl` pieces, in such a way that a certain piecewise linear monotone function related to the high derivative of `f` is equidistributed.

The intent is to choose a knot sequence suitable to the fine approximation of a function g whose rough approximation in `f` is assumed to contain enough information about g to make this feasible.

`newknt(f) ` uses for `newl` its default value, namely the number of polynomial pieces in `f`.

`[...,distfn] = newknt(...) ` also returns, in `distfn`, the ppform of that piecewise linear monotone function being equidistributed.

## Examples

If the error in the least-squares approximation `sp` to some data `x,y` by a spline of order `k` seems uneven, you might try for a more equitable distribution of knots by using

```spap2(newknt(sp),k,x,y); ```

For another example, see Solving a Nonlinear ODE with a Boundary Layer by Collocation.

## Algorithms

This is the Fortran routine `NEWNOT` in PGS. With k the order of the piecewise-polynomial function f in `pp`, the function |Dkf| is approximated by a piecewise constant function obtained by local, discrete, differentiation of the variation of Dk–1f. The new break sequence is chosen to subdivide the basic interval of the piecewise-polynomial f in such a way that