def test_pp(): coef = np.array([[1, 1], [0, 0]]) # linear from 0 to 2 @UnusedVariable # quadratic from 0 to 1 and 1 to 2. coef = np.array([[1, 1], [1, 1], [0, 2]]) dc = pl.polyder(coef, 1) c2 = pl.polyint(dc, 1) # @UnusedVariable breaks = [0, 1, 2] pp = PPform(coef, breaks) pp(0.5) pp(1) pp(1.5) dpp = pp.derivative() import matplotlib.pyplot as plt x = np.linspace(-1, 3) plt.plot(x, pp(x), x, dpp(x), '.') plt.show()
def integrate(self): """ Return the indefinite integral of the piecewise polynomial """ cof = pl.polyint(self.coeffs) pieces = len(self.breaks) - 1 if 1 < pieces: # evaluate each integrated polynomial at the right endpoint of its # interval xs = diff(self.breaks[:-1, ...], axis=0) index = np.arange(pieces - 1) vv = xs * cof[0, index] k = self.order for i in range(1, k): vv = xs * (vv + cof[i, index]) cof[-1] = np.hstack((0, vv)).cumsum() return PPform(cof, self.breaks, fill=self.fill)