## The ppform

### Introduction to ppform

A univariate *piecewise
polynomial* *f* is specified by its *break sequence* `breaks`

and the *coefficient
array* `coefs`

of the local power form
(see equation in Definition of ppform) of its polynomial
pieces; see Multivariate Tensor Product Splines for a discussion of multivariate
piecewise-polynomials. The coefficients may be (column-)vectors, matrices,
even ND-arrays. For simplicity, the present discussion deals only
with the case when the coefficients are scalars.

The break sequence is assumed to be strictly increasing,

breaks(1) < breaks(2) < ... < breaks(l+1)

with `l`

the number of polynomial pieces that
make up *f*.

While these polynomials may be of varying degrees, they are
all recorded as polynomials of the same *order* `k`

,
i.e., the coefficient array `coefs`

is of size `[l,k]`

,
with `coefs(j,:)`

containing the `k`

coefficients
in the local power form for the `j`

th
polynomial piece, from the highest to the lowest power; see equation
in Definition of ppform.

### Definition of ppform

The items `breaks`

, `coefs`

, `l`

,
and` k`

, make up the *ppform* of *f*,
along with the dimension `d`

of its coefficients;
usually `d`

equals 1. The *basic interval* of this form is the interval
[`breaks(1) `

.. `breaks(l+1)`

].
It is the default interval over which a function in ppform is plotted
by the plot command `fnplt`

.

In these terms, the precise description of the piecewise-polynomial *f* is

`f(t) = polyval(coefs(j,:), t - breaks(j)) ` | (1) |

for breaks(*j*)≤*t*<breaks(*j*+1).

Here, `polyval`

(`a`

,`x`

)
is the MATLAB^{®} function; it returns the number

$$\sum _{j=1}^{k}a\left(j\right){x}^{k-j}=a\left(1\right){x}^{k-1}+a\left(2\right){x}^{k-2}+\mathrm{...}+a\left(k\right){x}^{0}$$

This defines *f(t)* only for *t* in
the half-open interval `[breaks(1)..breaks(l+1)]`

.
For any other *t*, *f(t)* is defined
by

$$\begin{array}{cc}f\left(t\right)=polyval\left(coefs\left(j,:\right),t-breaks\left(j\right)\right)& \begin{array}{cc}j=& \begin{array}{c}1,t<breaks\left(1\right)\\ l,t\ge breaks\left(l+1\right)\end{array}\end{array}\end{array}$$

i.e., by extending the first, respectively
last, polynomial piece. In this way, a function in ppform has possible
jumps, in its value and/or its derivatives, only across the interior
breaks, `breaks(2:l)`

. The end breaks, `breaks([1,l+1])`

,
mainly serve to define the basic interval of the ppform.