from mathutils import * #interpolation y = [0, 1, 4,10,50,25,12, 5, 3, 0] x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] types = "linear", "cubic", "akima", "loess", "neville", "newton" functions = [interpolate(y,x,t) for t in types] plot_x = frange (0,9,0.01) values = [get_values(f,plot_x) for f in functions] plots=plot(values,types,plot_x) #derivative for i in range(len(types)): try: d = deriv(functions[i]) plots[i].addSeries(LinePlotSeries("Derivative")) plots[i].getSeries(1).setData(plot_x, get_values(d,plot_x)) except: #not differentiable pass #integration for i in range(len(types)): s = integrate(functions[i],x) plots[i].addMarker(x[-1], None, "Integral=" + str(round(s,4)), java.awt.Color.DARK_GRAY) #Direct calculation on arrays: print "Deriv (linear interpolation): ", deriv(y,x) print "Deriv (cubic interpolation): ", deriv(y, x, "cubic") print "Integral (linear interpolation): ", integrate(y, None, x, "cubic") print "Integral (cubic interpolation): ", integrate(y, None, x, "cubic") print "Integral (linear interpolation in range [1,5]): ", integrate(y, [1,5], x)