Guest User

Untitled

a guest
Nov 23rd, 2017
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.82 KB | None | 0 0
  1. def f_multiple_sin(x, *params):
  2. y = np.zeros_like(x)
  3. for i in range(0, len(params), 4): #4=amplitude, freq, phase, offset
  4. amplitude = params[i]
  5. freq = params[i+1]
  6. phase = params[i+2]
  7. offset = params[i+3]
  8. y = y + amplitude*np.sin(np.multiply(freq, x)+phase)+offset
  9. return y
  10.  
  11. def fit_multiple(t, flux, flux_err, guess):
  12. popt, pcov = optimize.curve_fit(
  13. f_multiple_sin, t, flux, sigma=flux_err, p0=guess,
  14. bounds=(guess-np.multiply(guess,0.1),guess+np.multiply(guess,0.1)),
  15. absolute_sigma=True
  16. )
  17.  
  18. perr = np.sqrt(np.diag(pcov))
  19.  
  20. return popt, perr
  21.  
  22. guess = [4.50148944e-03, 2.40000040e+02, 3.01766641e-03, 8.99996136e-01, 3.14546648e-03, 2.61818207e+02, 2.94282247e-03, 5.56770657e-06]
  23. popt, perr = fit_multiple(time, flux, flux_err, guess)
Add Comment
Please, Sign In to add comment