def Integrate(xdata,ydata): x_array=Numeric.array(xdata) y_array=Numeric.array(ydata) # Create the interpolating function f = InterpolatingFunction((x_array,), y_array) f_integral=f.definiteIntegral() return f_integral
print "d^2(somefunc)/dzdx:", r[2][2][0] # 0 print "d^2(somefunc)/dz^2:", r[2][2][2] # 20 print "\n\ntesting interpolation:" from Scientific.Functions.Interpolation \ import InterpolatingFunction as Ip t = sequence(0, 10, 0.1) v = sin(t) vi = Ip((t, ), v) # interpolate and compare with exact result: print "interpolated:", vi(5.05), " exact:", sin(5.05) # interpolate the derivative of v: vid = vi.derivative() print "interpolated derivative:", vid(5.05), " exact:", cos(5.05) # compute the integral of v over all t values: print "definite integral:", vi.definiteIntegral(), \ " exact:", -cos(t[-1]) - (-cos(t[0])) # add path to Grid2D: sys.path.insert(0, os.path.join(os.environ['scripting'], 'src', 'py', 'examples')) from Grid2D import Grid2D g = Grid2D(dx=0.1, dy=0.2) f = g('sin(pi*x)*sin(pi*y)') fi = Ip((g.xcoor, g.ycoor), f) # interpolate at (0.51,0.42) and compare with exact result: print "interpolation in 2D grid:", fi(0.51,0.42), \ " exact value:", sin(pi*0.51)*sin(pi*0.42) # (0.94640171438438569, 0.96810522380784525) print "\n\ntesting nonlinear least squares:"
print 'd^2(somefunc)/dzdx:', r[2][2][0] # 0 print 'd^2(somefunc)/dz^2:', r[2][2][2] # 20 print '\n\ntesting interpolation:' from Scientific.Functions.Interpolation \ import InterpolatingFunction as Ip t = linspace(0, 10, 101) v = sin(t) vi = Ip((t, ), v) # interpolate and compare with exact result: print 'interpolated:', vi(5.05), ' exact:', sin(5.05) # interpolate the derivative of v: vid = vi.derivative() print 'interpolated derivative:', vid(5.05), ' exact:', cos(5.05) # compute the integral of v over all t values: print 'definite integral:', vi.definiteIntegral(), \ ' exact:', -cos(t[-1]) - (-cos(t[0])) # add path to Grid2D (for testing interpolation on a 2D grid): sys.path.insert(0, os.path.join(os.environ['scripting'], 'src', 'py', 'examples')) from Grid2D import Grid2D g = Grid2D(dx=0.1, dy=0.2) f = g(lambda x, y: sin(pi * x) * sin(pi * y)) fi = Ip((g.xcoor, g.ycoor), f) # interpolate at (0.51,0.42) and compare with exact result: print 'interpolation in 2D grid:', fi(0.51,0.42), \ ' exact value:', sin(pi*0.51)*sin(pi*0.42) # (0.94640171438438569, 0.96810522380784525) print '\n\ntesting nonlinear least squares:'
print "d^2(somefunc)/dzdx:", r[2][2][0] # 0 print "d^2(somefunc)/dz^2:", r[2][2][2] # 20 print "\n\ntesting interpolation:" from Scientific.Functions.Interpolation import InterpolatingFunction as Ip t = linspace(0, 10, 101) v = sin(t) vi = Ip((t,), v) # interpolate and compare with exact result: print "interpolated:", vi(5.05), " exact:", sin(5.05) # interpolate the derivative of v: vid = vi.derivative() print "interpolated derivative:", vid(5.05), " exact:", cos(5.05) # compute the integral of v over all t values: print "definite integral:", vi.definiteIntegral(), " exact:", -cos(t[-1]) - (-cos(t[0])) # add path to Grid2D (for testing interpolation on a 2D grid): sys.path.insert(0, os.path.join(os.environ["scripting"], "src", "py", "examples")) from Grid2D import Grid2D g = Grid2D(dx=0.1, dy=0.2) f = g(lambda x, y: sin(pi * x) * sin(pi * y)) fi = Ip((g.xcoor, g.ycoor), f) # interpolate at (0.51,0.42) and compare with exact result: print "interpolation in 2D grid:", fi(0.51, 0.42), " exact value:", sin(pi * 0.51) * sin(pi * 0.42) # (0.94640171438438569, 0.96810522380784525) print "\n\ntesting nonlinear least squares:"