37 lines
1.1 KiB
Python
Executable File
37 lines
1.1 KiB
Python
Executable File
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) |