Documentation

### This is machine translation

Mouseover text to see original. Click the button below to return to the English version of the page.

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

## 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 `j`th 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.

﻿