Advertisement
Guest User

Untitled

a guest
Oct 24th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. from __future__ import division
  2. import numpy
  3. from scipy.optimize import curve_fit
  4. import matplotlib.pyplot as pyplot
  5.  
  6. def func(x,a,b,c):
  7. return a*numpy.exp(-b*x)-c
  8.  
  9.  
  10. yData = numpy.load('yData.npy')
  11. xData = numpy.load('xData.npy')
  12.  
  13. trialX = numpy.linspace(xData[0],xData[-1],1000)
  14.  
  15. # Fit a polynomial
  16. fitted = numpy.polyfit(xData, yData, 10)[::-1]
  17. y = numpy.zeros(len(trailX))
  18. for i in range(len(fitted)):
  19. y += fitted[i]*trialX**i
  20.  
  21. # Fit an exponential
  22. popt, pcov = curve_fit(func, xData, yData)
  23. yEXP = func(trialX, *popt)
  24.  
  25. pyplot.figure()
  26. pyplot.plot(xData, yData, label='Data', marker='o')
  27. pyplot.plot(trialX, yEXP, 'r-',ls='--', label="Exp Fit")
  28. pyplot.plot(trialX, y, label = '10 Deg Poly')
  29. pyplot.legend()
  30. pyplot.show()
  31.  
  32. xData = [1e-06, 2e-06, 3e-06, 4e-06,
  33. 5e-06, 6e-06, 7e-06, 8e-06,
  34. 9e-06, 1e-05, 2e-05, 3e-05,
  35. 4e-05, 5e-05, 6e-05, 7e-05,
  36. 8e-05, 9e-05, 0.0001, 0.0002,
  37. 0.0003, 0.0004, 0.0005, 0.0006,
  38. 0.0007, 0.0008, 0.0009, 0.001,
  39. 0.002, 0.003, 0.004, 0.005,
  40. 0.006, 0.007, 0.008, 0.009, 0.01]
  41.  
  42. yData =
  43. [6.37420666067e-09, 1.13082012115e-08,
  44. 1.52835756975e-08, 2.19214493931e-08, 2.71258852882e-08, 3.38556130078e-08, 3.55765277358e-08,
  45. 4.13818145846e-08, 4.72543475372e-08, 4.85834751151e-08, 9.53876562077e-08, 1.45110636413e-07,
  46. 1.83066627931e-07, 2.10138415308e-07, 2.43503982686e-07, 2.72107045549e-07, 3.02911771395e-07,
  47. 3.26499455951e-07, 3.48319349445e-07, 5.13187669283e-07, 5.98480176303e-07, 6.57028222701e-07,
  48. 6.98347073045e-07, 7.28699930335e-07, 7.50686502279e-07, 7.7015576866e-07, 7.87147246927e-07,
  49. 7.99607141001e-07, 8.61398763228e-07, 8.84272900407e-07, 8.96463883243e-07, 9.04105135329e-07,
  50. 9.08443443149e-07, 9.12391264185e-07, 9.150842683e-07, 9.16878548643e-07, 9.18389990067e-07]
  51.  
  52. xData = np.load('xData.npy')*10**5
  53. yData = np.load('yData.npy')*10**5
  54.  
  55. from __future__ import division
  56.  
  57. import os
  58. os.chdir(os.path.expanduser('~/tmp'))
  59.  
  60. import numpy as np
  61. import scipy.optimize as optimize
  62. import matplotlib.pyplot as plt
  63.  
  64. def func(x,a,b,c):
  65. return a*np.exp(-b*x)-c
  66.  
  67.  
  68. xData = np.load('xData.npy')*10**5
  69. yData = np.load('yData.npy')*10**5
  70.  
  71. print(xData.min(), xData.max())
  72. print(yData.min(), yData.max())
  73.  
  74. trialX = np.linspace(xData[0], xData[-1], 1000)
  75.  
  76. # Fit a polynomial
  77. fitted = np.polyfit(xData, yData, 10)[::-1]
  78. y = np.zeros(len(trialX))
  79. for i in range(len(fitted)):
  80. y += fitted[i]*trialX**i
  81.  
  82. # Fit an exponential
  83. popt, pcov = optimize.curve_fit(func, xData, yData)
  84. print(popt)
  85. yEXP = func(trialX, *popt)
  86.  
  87. plt.figure()
  88. plt.plot(xData, yData, label='Data', marker='o')
  89. plt.plot(trialX, yEXP, 'r-',ls='--', label="Exp Fit")
  90. plt.plot(trialX, y, label = '10 Deg Poly')
  91. plt.legend()
  92. plt.show()
  93.  
  94. guess = (-1, 0.1, 0)
  95. popt, pcov = optimize.curve_fit(func, xData, yData, guess)
  96.  
  97. popt, pcov = curve_fit(func, xData, yData)
  98.  
  99. popt, pcov = curve_fit(func, xData, yData,
  100. diag=(1./xData.mean(),1./yData.mean()) )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement