[关闭]
@Xc-liu 2016-05-20T21:05:11.000000Z 字数 2281 阅读 827

homework_12行星共振_计算程序

计算物理

程序1

  1. import math
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. ###
  5. GM_s=4*math.pi**2
  6. GM_J=1.9/2000.0*GM_s
  7. dt=0.005
  8. end_t=100
  9. ###
  10. x_J=[]
  11. v_x_J=[]
  12. y_J=[]
  13. v_y_J=[]
  14. x_a=[]
  15. v_x_a=[]
  16. y_a=[]
  17. v_y_a=[]
  18. t=[0]
  19. ###
  20. for i in range(int(end_t/dt)):
  21. v_x_J.append(v_x_J[i]-GM_s*x_J[i]*dt/((x_J[i]**2+y_J[i]**2)**(3.0/2.0)))
  22. x_J.append(x_J[i]+v_x_J[i+1]*dt)
  23. v_y_J.append(v_y_J[i]-GM_s*y_J[i]*dt/((x_J[i]**2+y_J[i]**2)**(3.0/2.0)))
  24. y_J.append(y_J[i]+v_y_J[i+1]*dt)
  25. v_x_a.append(v_x_a[i]-GM_s*x_a[i]*dt/((x_a[i]**2+y_a[i]**2)**(3.0/2.0))+GM_J*(x_J[i]-x_a[i])*dt/(((x_a[i]-x_J[i])**2+(y_a[i]-y_J[i])**2)**(3.0/2.0)))
  26. x_a.append(x_a[i]+v_x_a[i+1]*dt)
  27. v_y_a.append(v_y_a[i]-GM_s*y_a[i]*dt/((x_a[i]**2+y_a[i]**2)**(3.0/2.0))+GM_J*(y_J[i]-y_a[i])*dt/(((x_a[i]-x_J[i])**2+(y_a[i]-y_J[i])**2)**(3.0/2.0)))
  28. y_a.append(y_a[i]+v_y_a[i+1]*dt)
  29. ###
  30. plt.plot(x_a,y_a,'--' ,label='asteroid,$m_a/M_s=,gap:1/2$')
  31. plt.title(u'the orbit of asteroid',fontsize=14)
  32. plt.xlabel(u'x/AU',fontsize=14)
  33. plt.ylabel(u'y/AU',fontsize=14)
  34. plt.legend(fontsize=12,loc='best')
  35. plt.show()

程序2

  1. import math
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. ###
  5. GM_s=4*math.pi**2
  6. GM_J=1.9/2000.0*GM_s
  7. dt=0.005
  8. end_t=1000
  9. ###
  10. m=[]
  11. dm=0.001
  12. delta_a=[]
  13. for j in range(30):
  14. l=0
  15. delta=0
  16. x_J=[5.200]
  17. v_x_J=[0]
  18. y_J=[0]
  19. v_y_J=[2.755]
  20. m.append(3.320+j*dm)
  21. x_a=[m[j]]
  22. v_x_a=[0]
  23. y_a=[0]
  24. v_y_a=[2*math.pi/m[j]**0.5]
  25. t=[0]
  26. ###
  27. ###
  28. for i in range(int(end_t/dt)):
  29. v_x_J.append(v_x_J[i]-GM_s*x_J[i]*dt/((x_J[i]**2+y_J[i]**2)**(3.0/2.0)))
  30. x_J.append(x_J[i]+v_x_J[i+1]*dt)
  31. v_y_J.append(v_y_J[i]-GM_s*y_J[i]*dt/((x_J[i]**2+y_J[i]**2)**(3.0/2.0)))
  32. y_J.append(y_J[i]+v_y_J[i+1]*dt)
  33. v_x_a.append(v_x_a[i]-GM_s*x_a[i]*dt/((x_a[i]**2+y_a[i]**2)**(3.0/2.0))+GM_J*(x_J[i]-x_a[i])*dt/(((x_a[i]-x_J[i])**2+(y_a[i]-y_J[i])**2)**(3.0/2.0)))
  34. x_a.append(x_a[i]+v_x_a[i+1]*dt)
  35. v_y_a.append(v_y_a[i]-GM_s*y_a[i]*dt/((x_a[i]**2+y_a[i]**2)**(3.0/2.0))+GM_J*(y_J[i]-y_a[i])*dt/(((x_a[i]-x_J[i])**2+(y_a[i]-y_J[i])**2)**(3.0/2.0)))
  36. y_a.append(y_a[i]+v_y_a[i+1]*dt)
  37. delta=delta+abs(x_a[i]-x_a[0])
  38. delta_a.append(delta/(end_t*m[j]/dt))
  39. print j
  40. ###
  41. plt.scatter(m,delta_a,marker='o',color='b',label='$\delta r-r$,$gap:1/2$')
  42. #plt.plot(m,delta_a,'--' ,label='$\delta r-r$,$gap:1/2$')
  43. plt.title(u'$\delta r-r$',fontsize=14)
  44. plt.xlabel(u'$r/AU$',fontsize=14)
  45. plt.ylabel(u'$\delta r/AU$',fontsize=14)
  46. plt.legend(fontsize=12,loc='best')
  47. plt.show()
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注