# 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
|*D ^{k}f*| is approximated by a
piecewise constant function obtained by local, discrete, differentiation of the variation of

*D*

^{k}^{–1}

*f*. The new break sequence is chosen to subdivide the basic interval of the piecewise-polynomial

*f*in such a way that

$${\int}_{\text{newknots}(i)}^{\text{newknots}(i+1)}|{D}^{k}f{|}^{1/k}=\text{const},\text{i}=k:k+\text{newl}-1$$