Make piecewise polynomial
pp = mkpp(breaks,coefs)
pp = mkpp(breaks,coefs,d)
pp = mkpp(breaks,coefs) builds a piecewise polynomial pp from its breaks and coefficients. breaks is a vector of length L+1 with strictly increasing elements which represent the start and end of each of L intervals. coefs is an L-by-k matrix with each row coefs(i,:) containing the coefficients of the terms, from highest to lowest exponent, of the order k polynomial on the interval [breaks(i),breaks(i+1)].
pp = mkpp(breaks,coefs,d) indicates that the piecewise polynomial pp is d-vector valued, i.e., the value of each of its coefficients is a vector of length d. breaks is an increasing vector of length L+1. coefs is a d-by-L-by-k array with coefs(r,i,:) containing the k coefficients of the ith polynomial piece of the rth component of the piecewise polynomial.
Note. The order of a polynomial tells you the number of coefficients used in its description. A kth order polynomial has the form
It has k coefficients, some of which can be 0, and maximum exponent k – 1. So the order of a polynomial is usually one greater than its degree. For example, a cubic polynomial is of order 4.
The first plot shows the quadratic polynomial
shifted to the interval [-8,-4]. The second plot shows its negative
but shifted to the interval [-4,0].
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