fit_d_param.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #!/usr/bin/env python3
  2. # -*- coding: UTF-8 -*-
  3. from matplotlib import pyplot as plt
  4. import numpy as np
  5. import cma
  6. from eval_spectra import spectra, params_count as pc
  7. from_disk = np.loadtxt('rs4-d_perp_interpolated.txt')
  8. step = 5
  9. omega_ratio = np.copy(from_disk[0, ::step])
  10. d_rs4 = from_disk[1, ::step] + 1j*from_disk[2, ::step]
  11. def rms(x0):
  12. d_fit = spectra(omega_ratio, x0)
  13. diff_re = np.real(d_rms - d_fit)
  14. diff_im = np.imag(d_rms - d_fit)
  15. # rms = np.sqrt(np.sum(np.abs(diff_re)**2))
  16. # rms += np.sqrt(np.sum(np.abs(diff_im)**2))
  17. rms = (np.sum(np.abs(diff_re)**2))
  18. rms += (np.sum(np.abs(diff_im)**2))
  19. return rms
  20. x0 = np.random.random(pc)
  21. d_rms = d_rs4
  22. x, es = cma.fmin2(rms, x0, sigma0=0.2)
  23. # x = np.array([0.1332754793043937, 0.8248539955310855, -
  24. # 0.5024906405674647, -0.08076797734842008])
  25. x1 = np.copy(x)
  26. x0 = np.random.random(pc)
  27. d_rms = d_rs4 - spectra(omega_ratio, x1)
  28. x, es = cma.fmin2(rms, x0, sigma0=2)
  29. # x = np.array([0.0019369902204593222, 0.9978752165162739,
  30. # 0.05801769075873917, -0.032110084386726336])
  31. x2 = np.copy(x)
  32. x0 = np.hstack((x1, x2))
  33. d_rms = d_rs4
  34. x, es = cma.fmin2(rms, x0, sigma0=0.02)
  35. # x = np.array([0.11878109939932953, 0.8142072049467617, -0.43466301805510305, -0.012772472816983446,
  36. # 0.012573279034397847, 1.0010563127596699, 0.07665592968844606, -0.07679477702750433])
  37. x12 = x
  38. x0 = np.random.random(pc)
  39. d_rms = d_rs4 - spectra(omega_ratio, x12)
  40. x, es = cma.fmin2(rms, x0, sigma0=0.2)
  41. # x = np.array([0.1434266344187499, 0.5188802822956783, -
  42. # 0.00950433613285183, 0.013585684987833985])
  43. x3 = np.copy(x)
  44. x0 = np.hstack((x1, x2, x3))
  45. d_rms = d_rs4
  46. x, es = cma.fmin2(rms, x0, sigma0=0.02)
  47. # x = np.array([0.09914803, 0.81158511, -0.34941712, 0.01388308,
  48. # 0.01560184, 1.00551237, 0.11006553, -0.09818891,
  49. # 0.34432793, 0.64182428, -0.0803532, 0.04641341])
  50. x123 = x
  51. d_fit = spectra(omega_ratio, x)
  52. plt.figure('rs4')
  53. plt.plot(omega_ratio, np.real(d_rms), label='re d')
  54. plt.plot(omega_ratio, np.imag(d_rms), label='im d')
  55. plt.plot(omega_ratio, np.real(d_fit), label='re d fit', alpha=0.2, lw=3)
  56. plt.plot(omega_ratio, np.imag(d_fit), label='im d fit', alpha=0.2, lw=3)
  57. plt.axhline(y=0.0, color='black', linestyle='-', lw=1)
  58. plt.legend()
  59. plt.show()