# test_nuderiv.py simple test from nuderiv import * print "test_nuderiv.py running" # nuderiv(order, npoints, point, x): # return c[] # compute the coefficients to numerically compute a derivative # of order 'order' using 'npoints' at ordinate point, # where order>=1, npoints>=order+1, 0 <= point < npoints, # 'c' array returned with numerator of coefficients, order = 2 npoints = 7 point = 3 c = [0 for i in range(npoints)] # numerator of terms returned h=0.1 # does not need to be uniform x=[0.0 for i in range(npoints)] # x values y=[0.0 for i in range(npoints)] # y = f(x) df=[0.0 for i in range(npoints)] # df(x)/dx = f'(x) ddf=[0.0 for i in range(npoints)] # d^2f(x)/dx = f''(x) for i in range(npoints): x[i] = i*h print "x[", i, "]=", x[i] print " " print "y = f(x) = x^3 + 2x^2 + 3x +4 " for i in range(npoints): y[i] = x[i]*x[i]*x[i]+2.0*x[i]*x[i]+3.0*x[i]+4.0 print "y[", i, "]=", y[i] print " " print "df(x)/dx = 3.0*x^2 + 4.0*x + 3.0" for i in range(npoints): df[i] = 3.0*x[i]*x[i]+4.0*x[i]+3.0 print "df[", i, "]=", df[i] print " " print "ddf(x)/dx = 6.0*x + 4.0" for i in range(npoints): ddf[i] = 6.0*x[i]+4.0 print "ddf[", i, "]=", ddf[i] print " " for point in range(npoints): print "c = nuderiv(", order, ",", npoints, ",", point, ", x)" c = nuderiv(order, npoints, point, x) print "c[0]=", c[0] print "c[1]=", c[1] print "c[2]=", c[2] print "c[3]=", c[3] print "c[4]=", c[4] print "c[5]=", c[5] print "c[6]=", c[6] print " " print "nuderiv f(x[npoint]) = (c[0]*f(x[0]) +...+ c[points-1]*f(x[points-1]))" print "check derivative at point ", point sum = 0.0 for i in range(npoints): y[i] = x[i]*x[i]*x[i]+2.0*x[i]*x[i]+3.0*x[i]+4.0 for i in range(npoints): sum = sum + c[i]*y[i] print "computed derivative = ", sum, " should be =", ddf[point] print " " print " " print "test_nuderiv.py finished"