Experiment with B-spline as function of its knots

`bspligui `

`bspligui `

starts a graphical
user interface (GUI) for exploring how a B-spline depends on its knots.
As you add, move, or delete knots, you see the B-spline and its first
three derivatives change accordingly.

You observe the following basic facts about the B-spline with knot sequence $${t}_{0}\le \cdot \cdot \cdot \le {t}_{k}$$:

The B-spline is positive on the open interval (

*t*_{0}..*t*). It is zero at the end knots,_{k}*t*_{0}and*t*, unless they are knots of multiplicity_{k}*k*. The B-spline is also zero outside the closed interval [*t*_{0}..*t*], but that part of the B-spline is not shown in the GUI._{k}Even at its maximum, the B-spline is never bigger than 1. It reaches the value 1 inside the interval (

*t*_{0}..*t*) only at a knot of multiplicity at least_{k}*k*–1. On the other hand, that maximum cannot be arbitrarily small; it seems smallest when there are no interior knots.The B-spline is piecewise polynomial of order

*k*, i.e., its polynomial pieces all are of degree <*k*. For*k*= 1:4, you can even observe that all its nonzero polynomial pieces are of exact degree*k*– 1, by looking at the first three derivatives of the B-spline. This means that the degree goes up/down by 1 every time you add/delete a knot.Each knot

*t*is a break for the B-spline, but it is permissible for several knots to coincide. Therefore, the number of nontrivial polynomial pieces is maximally_{j}*k*(when all the knots are different) and minimally 1 (when there are no “interior” knots), and any number between 1 and*k*is possible.The smoothness of the B-spline across a break depends on the multiplicity of the corresponding knot. If the break occurs in the knot sequence

*m*times, then the (*k*–*m*)th derivative of the B-spline has a jump across that break, while all derivatives of order lower than (*k*–*m*) are continuous across that break. Thus, by varying the multiplicity of a knot, you can control the smoothness of the B-spline across that knot.As one knot approaches another, the highest derivative that is continuous across both develops a jump and the higher derivatives become unbounded. But nothing dramatic happens in any of the lower-order derivatives.

The B-spline is

*bell-shaped*in the following sense: if the first derivative is not identically zero, then it has exactly one sign change in the interval (*t*_{0}..*t*), hence the B-spline itself is_{k}*unimodal*, meaning that it has exactly one maximum. Further, if the second derivative is not identically zero, then it has exactly two sign changes in that interval. Finally, if the third derivative is not identically zero, then it has exactly three sign changes in that interval. This illustrates the fact that, for*j*= 0:*k*– 1, if the*j*th derivative is not identically zero, then it has exactly*j*sign changes in the interval (*t*_{0}..*t*); it is this property that is meant by the term “bell-shaped”. For this claim to be strictly true, one has to be careful with the meaning of “sign change” in case there are knots with multiplicities. For example, the (_{k}*k*–1)st derivative is piecewise constant, hence it cannot have*k*–1 sign changes in the straightforward sense unless there are*k*polynomial pieces, i.e., unless all the knots are simple.