Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

ppval

Evaluate piecewise polynomial

Syntax

v = ppval(pp,xq)

Description

example

v = ppval(pp,xq) evaluates the piecewise polynomial pp at the query points xq.

Examples

collapse all

Create a piecewise polynomial that has a cubic polynomial in the interval [0,4], a quadratic polynomial in the interval [4,10], and a quartic polynomial in the interval [10,15].

breaks = [0 4 10 15];
coefs = [0 1 -1 1 1; 0 0 1 -2 53; -1 6 1 4 77];
pp = mkpp(breaks,coefs)
pp = struct with fields:
      form: 'pp'
    breaks: [0 4 10 15]
     coefs: [3×5 double]
    pieces: 3
     order: 5
       dim: 1

Evaluate the piecewise polynomial at many points in the interval [0,15] and plot the results. Plot vertical dashed lines at the break points where the polynomials meet.

xq = 0:0.01:15;
plot(xq,ppval(pp,xq))
line([4 4],ylim,'LineStyle','--','Color','k')
line([10 10],ylim,'LineStyle','--','Color','k')

Create two quadratic polynomials, evaluate them at several query points, and plot the results. Then create a single piecewise polynomial with four intervals that alternate between the two quadratic polynomials.

The first two plots show a quadratic polynomial and its negation shifted to the intervals [-8,-4] and [-4,0]. The polynomial is

The last plot shows a piecewise polynomial constructed by alternating these two quadratic pieces over four intervals. It also shows its first derivative, which was constructed after breaking the piecewise polynomial apart using unmkpp.

subplot(2,2,1)
cc = [-1/4 1 0]; 
pp1 = mkpp([-8 -4],cc);
xx1 = -8:0.1:-4; 
plot(xx1,ppval(pp1,xx1),'k-')

subplot(2,2,2)
pp2 = mkpp([-4 0],-cc);
xx2 = -4:0.1:0; 
plot(xx2,ppval(pp2,xx2),'k-')

subplot(2,1,2)
pp = mkpp([-8 -4 0 4 8],[cc;-cc;cc;-cc]);
xx = -8:0.1:8;
plot(xx,ppval(pp,xx),'k-')
[breaks,coefs,l,k,d] = unmkpp(pp);
dpp = mkpp(breaks,repmat(k-1:-1:1,d*l,1).*coefs(:,1:k-1),d);
hold on
plot(xx,ppval(dpp,xx),'r-')
hold off

Input Arguments

collapse all

Piecewise polynomial, specified as a structure. You can create pp using spline, pchip, or the spline utility function mkpp.

Query points, specified as a vector or array. xq specifies the points where ppval evaluates the piecewise polynomial.

Data Types: single | double

Output Arguments

collapse all

Piecewise polynomial values at query points, returned as a vector, matrix, or array.

If pp has [d1,..,dr]-valued coefficients (nonscalar coefficient values), then:

  • When xq is a vector of length N, v has size [d1,...,dr,N], and v(:,...,:,j) is the value at xq(j).

  • When xq has size [N1,...,Ns], v has size [d1,...,dr,N1,...,Ns], and v(:,...,:, j1,...,js) is the value at xq(j1,...,js).

Extended Capabilities

See Also

| | |

Introduced before R2006a

Was this topic helpful?