Advertisement
gronke

interp hw

Jul 23rd, 2012
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import numpy
  2. import pylab
  3.  
  4. def lpw(sizer,dx,dy):
  5. lpw_array = numpy.zeros(dx.size)
  6. qq = 0
  7. for sort_index in range(1, sizer):
  8. while sizer[sort_index] > x[qq]:
  9. qq += 1
  10. xa= dx[qq-1]
  11. ya= dy[qq-1]
  12. xb= dx[qq]
  13. yb= dx[qq]
  14. yy = (yb-ya)*((xx-xa)/(xb-xa))+ ya
  15. lpw_array[sort_index] = yy
  16. return lpw_array
  17.  
  18. def csp(sizer,dx,dy):
  19. csp_array = numpy.zeros(dx.size)
  20. for sort_index in range(1, sizer):
  21. while sizer[sort_index] > dx[sort_index]:
  22. i += 1
  23.  
  24. dddy = dy[i+1]
  25.  
  26. ddy = dy[i]
  27.  
  28. ddyy = dy[i-1]
  29.  
  30. ddyyy = dy[i-2]
  31.  
  32. dddx = dx[i+1]
  33.  
  34. ddx = dx[i]
  35.  
  36. ddxx = dx[i-1]
  37.  
  38. ddxxx = dx[i-2]
  39.  
  40. y = (ddy-ddyy)*(x-ddxx)/(ddx-ddxx) + ddyy
  41.  
  42. mA = ((ddy-ddyy)*(ddxx-ddxxx)**2 + (ddyy-ddyyy)*(ddx-ddxx)**2)/((ddx-ddxx)*(ddxx-ddxxx)*(ddx-ddxxx))
  43.  
  44. mB = ((dddy-ddy)*(ddx-ddxx)**2 + (ddy-ddyy)*(dddx-ddx)**2)/((dddx-ddx)*(ddx-ddxx)*(dddx-ddxx))
  45.  
  46. x_s = (x - ddxx)/(ddx - ddxx)
  47.  
  48. a0 = ddyy
  49. a1 = (ddx - ddxx)*mA
  50. a2 = 3*(ddy - ddyy) - 2*(ddx-ddxx)*mA - (ddx - ddxx)*mB
  51. a3 = -2*(ddy - ddyy) + (ddx-ddxx)*mA + (ddx - ddxx)*mB
  52. csp_array = a0 + a1*x_s + a2*x_s**2 + a3*x_s**3
  53. return csp_array
  54.  
  55. data = numpy.loadtxt('data_interp.dat')
  56.  
  57. dx = data[:,0]
  58. dy = data[:,1]
  59.  
  60. sizer = numpy.arange(0,4.60,0.01)
  61. sort_index = numpy.argsort(dx)
  62. dx = dx[sort_index]
  63. dy = dy[sort_index]
  64.  
  65. the_function = numpy.cos(sizer)*numpy.tanh(sizer)
  66.  
  67. lpw_y = lpw(sizer,dx,dy)
  68. csp_y = csp(sizer,dx,dy)
  69.  
  70. pylab.figure(1)
  71. pylab.plot(dx,dy)
  72. pylab.plot(sizer,lpw_y,'o')
  73. pylab.plot(sizer,csp_y,'^')
  74. pylab.plot(sizer,the_function,'--')
  75. pylab.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement