## Constructing and Working with ppform Splines

### Constructing a ppform

A piecewise-polynomial is usually constructed by some command, through a process of interpolation or approximation, or conversion from some other form e.g., from the B-form, and is output as a variable. But it is also possible to make one up from scratch, using the statement

pp
= ppmak(breaks,coefs)

For example, if you enter pp=ppmak(-5:-1,-22:-11), or, more explicitly,

breaks = -5:-1;
coefs = -22:-11; pp = ppmak(breaks,coefs);

you specify the uniform break sequence -5:-1 and the coefficient sequence -22:-11. Because this break sequence has 5 entries, hence 4 break intervals, while the coefficient sequence has 12 entries, you have, in effect, specified a piecewise-polynomial of order 3 (= 12/4). The command

fnbrk(pp)

prints out all the constituent parts of this piecewise-polynomial, as follows:

breaks(1:l+1)
-5 -4 -3 -2 -1
coefficients(d*l,k)
-22 -21 -20
-19 -18 -17
-16 -15 -14
-13 -12 -11
pieces number l
4
order k
3
dimension d of target
1

Further, fnbrk can be used to supply each of these parts separately. But the point of Curve Fitting Toolbox™ spline functionality is that you usually need not concern yourself with these details. You simply use pp as an argument to commands that evaluate, differentiate, integrate, convert, or plot the piecewise-polynomial whose description is contained in pp.

### Working With ppform Splines

Here are some functions for operations you can perform on a piecewise-polynomial.

 v = fnval(pp,x) Evaluates dpp = fnder(pp) Differentiates dirpp = fndir(pp,dir) Differentiates in the direction dir ipp = fnint(pp) Integrates fnmin(pp,[a,b]) Finds the minimum value in given interval fnzeros(pp,[a,b]) Finds the zeros in the given interval pj = fnbrk(pp,j) Pulls out the jth polynomial piece pc = fnbrk(pp,[a b]) Restricts/extends to the interval [a..b] po = fnxtr(pp,order) Extends outside its basic interval by polynomial of specified order fnplt(pp,[a,b]) Plots on given interval sp = fn2fm(pp,'B-') Converts to B-form pr = fnrfn(pp,morebreaks) Inserts additional breaks

Inserting additional breaks comes in handy when you want to add two piecewise-polynomials with different breaks, as is done in the command fncmb.

### Example ppform

Execute the following commands to create and plot the particular piecewise-polynomial (ppform) described in the Constructing a ppform section.

1. Create the piecewise-polynomial with break sequence -5:-1 and coefficient sequence -22:-11:

pp=ppmak(-5:-1,-22:-11)
2. Create the basic plot:

x = linspace(-5.5,-.5,101);
plot(x, fnval(pp,x),'x')
3. Add the break lines to the plot:

breaks=fnbrk(pp,'b'); yy=axis; hold on
for j=1:fnbrk(pp,'l')+1
plot(breaks([j j]),yy(3:4))
end
4. Superimpose the plot of the polynomial that supplies the third polynomial piece:

plot(x,fnval(fnbrk(pp,3),x),'linew',1.3)
set(gca,'ylim',[-60 -10]), hold off

A Piecewise-Polynomial Function, Its Breaks, and the Polynomial Giving Its Third Piece

The figure above is the final picture. It shows the piecewise-polynomial as a sequence of points and, solidly on top of it, the polynomial from which its third polynomial piece is taken. It is quite noticeable that the value of a piecewise-polynomial at a break is its limit from the right, and that the value of the piecewise-polynomial outside its basic interval is obtained by extending its leftmost, respectively its rightmost, polynomial piece.

While the ppform of a piecewise-polynomial is efficient for evaluation, the construction of a piecewise-polynomial from some data is usually more efficiently handled by determining first its B-form, i.e., its representation as a linear combination of B-splines.