Advertisement
Guest User

Untitled

a guest
Mar 21st, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.92 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Thu Feb 28 15:26:00 2019
  4.  
  5. @author: Rui
  6. """
  7. import sys
  8. import numpy as np
  9. import matplotlib.pyplot as plt
  10. np.set_printoptions(threshold=sys.maxsize)
  11. ##########################
  12. minput=input('Do you want the moon to exist in this model? y/n: ')
  13. ##########################
  14. m=1
  15. h=100
  16. n=int(1000000/h)
  17. ptno=list(range(0,n+1))
  18. x=np.zeros(n+1)
  19. y=np.zeros(n+1)
  20. ycomb=np.zeros(n+1)
  21. vx=np.zeros(n+1)
  22. vy=np.zeros(n+1)
  23. mx=np.zeros(n+1)
  24. my=np.zeros(n+1)
  25.  
  26. xm=0
  27. ym=384400000
  28. Mm=7.35E22
  29. Rm=1737100
  30.  
  31. x[0]=0
  32. y[0]=-42164000
  33. vx[0]=3075
  34. vy[0]=0
  35.  
  36. for i in range(0,n):
  37. ycomb[i]=y[i]+ym
  38.  
  39. R=6371
  40. M=5.972E24
  41. G=6.67408E-11
  42. ################################################################################
  43. f3=(-G*M*x)/((x**2+y**2)**(3/2))
  44. f4=(-G*M*y)/((x**2+y**2)**(3/2))
  45. f3m=((-G*Mm*x)/(((x)**2+np.power(ycomb,2))**(3/2)))+((-G*M*x)/((x**2+y**2)**(3/2)))
  46. f4m=((-G*Mm*(ycomb))/(((x)**2+np.power(ycomb,2))**(3/2)))+((-G*M*y)/((x**2+y**2)**(3/2)))
  47.  
  48. ###############################################################################
  49. k1x=np.zeros(n+1)
  50. k1y=np.zeros(n+1)
  51. k1vx=np.zeros(n+1)
  52. k1vy=np.zeros(n+1)
  53. k2x=np.zeros(n+1)
  54. k2y=np.zeros(n+1)
  55. k2vx=np.zeros(n+1)
  56. k2vy=np.zeros(n+1)
  57. k3x=np.zeros(n+1)
  58. k3y=np.zeros(n+1)
  59. k3vx=np.zeros(n+1)
  60. k3vy=np.zeros(n+1)
  61. k4x=np.zeros(n+1)
  62. k4y=np.zeros(n+1)
  63. k4vx=np.zeros(n+1)
  64. k4vy=np.zeros(n+1)
  65. ###############################################################################
  66. if minput=='n':
  67. for i in range (0,n):
  68. k1x[i]=vx[i]
  69. k1y[i]=vy[i]
  70. k1vx[i]=(-G*M*x[i])/((x[i]**2+y[i]**2)**(3/2))
  71. k1vy[i]=(-G*M*y[i])/((x[i]**2+y[i]**2)**(3/2))
  72.  
  73. k2x[i]=(vx[i]+(h*k1vx[i]/2))
  74. k2y[i]=(vy[i]+(h*(k1vy[i]/2)))
  75. k2vx[i]=(-G*M*(x[i]+(h*(k1x[i]/2)))/((x[i]+h*(k1x[i]/2))**2+(y[i]+(h*(k1y[i]/2)))**2)**(3/2))
  76. k2vy[i]=(-G*M*(y[i]+(h*(k1y[i]/2)))/((x[i]+h*(k1x[i]/2))**2+(y[i]+(h*(k1y[i]/2)))**2)**(3/2))
  77.  
  78. k3x[i]=(vx[i]+(h*k2vx[i]/2))
  79. k3y[i]=(vy[i]+(h*k2vy[i]/2))
  80. k3vx[i]=(-G*M*(x[i]+h*(k2x[i]/2))/(((x[i]+h*(k2x[i]/2))**2+(y[i]+h*(k2y[i]/2))**2)**(3/2)))
  81. k3vy[i]=(-G*M*(y[i]+h*(k2y[i]/2))/(((x[i]+h*(k2x[i]/2))**2+(y[i]+h*(k2y[i]/2))**2)**(3/2)))
  82.  
  83. k4x[i]=(vx[i]+(h*k3vx[i]))
  84. k4y[i]=(vy[i]+(h*k3vy[i]))
  85. k4vx[i]=(-G*M*(x[i]+(h*(k3x[i]))/(((x[i]+h*(k3x[i])**2+(y[i]+(h*(k3y[i])**2)**(3/2)))))))
  86. k4vy[i]=(-G*M*(y[i]+(h*(k3y[i]))/(((x[i]+h*(k3x[i])**2+(y[i]+(h*(k3y[i])**2)**(3/2)))))))
  87.  
  88. x[i+1]=x[i]+(h/6)*(k1x[i]+2*k2x[i]+2*k3x[i]+k4x[i])
  89. y[i+1]=y[i]+(h/6)*(k1y[i]+2*k2y[i]+2*k3y[i]+k4y[i])
  90. vx[i+1]=vx[i]+(h/6)*(k1vx[i]+2*k2vx[i]+2*k3vx[i]+k4vx[i])
  91. vy[i+1]=vy[i]+(h/6)*(k1vy[i]+2*k2vy[i]+2*k3vy[i]+k4vy[i])
  92.  
  93. if (np.sqrt(x[i]**2+y[i]**2)<R):
  94. break
  95.  
  96. en=int((2*np.pi)/0.1)
  97. ex=np.zeros(en)
  98. ey=np.zeros(en)
  99.  
  100. for i in range(en):
  101. ex[i]=R*np.cos(i*h)
  102. ey[i]=R*np.sin(i*h)
  103.  
  104. plt.plot(ex,ey)
  105. plt.plot(x,y)
  106. plt.axis('equal')
  107. plt.show()
  108.  
  109. v=np.sqrt((vx**2)+(vy**2))
  110. r=np.sqrt((x**2)+(y**2))
  111.  
  112. ke=(1/2)*m*(v**2)
  113. pe=(-G*M*m)/r
  114. etot=ke+pe
  115.  
  116. plt.plot(ptno,ke)
  117. plt.plot(ptno,pe)
  118. plt.plot(ptno,etot)
  119. #############################################################################
  120. #if minput=='y':
  121. # for i in range (0,n):
  122. # k1x=f1(x[i],y[i],vx[i],vy[i])
  123. # k1y=f2(x[i],y[i],vx[i],vy[i])
  124. # k1vx=f3m(x[i],y[i],vx[i],vy[i])
  125. # k1vy=f4m(x[i],y[i],vx[i],vy[i])
  126. #
  127. # k2x=f1(x[i],y[i],(vx[i]+(h*k1vx/2)),vy[i])
  128. # k2y=f2(x[i],y[i],vx[i],(vy[i]+(h*(k1vy/2))))
  129. # k2vx=f3m((x[i]+h*(k1x/2)),(y[i]+(h*(k1y/2))),vx[i],vy[i])
  130. # k2vy=f4m((x[i]+h*(k1x/2)),(y[i]+(h*(k1y/2))),vx[i],vy[i])
  131. #
  132. # k3x=f1(x[i],y[i],(vx[i]+(h*k2vx/2)),vy[i])
  133. # k3y=f2(x[i],y[i],vx[i],(vy[i]+(h*k2vy/2)))
  134. # k3vx=f3m((x[i]+h*(k2x/2)),(y[i]+h*(k2y/2)),vx[i],vy[i])
  135. # k3vy=f4m((x[i]+h*(k2x/2)),(y[i]+h*(k2y/2)),vx[i],vy[i])
  136. #
  137. # k4x=f1(x[i],y[i],(vx[i]+(h*k3vx)),vy[i])
  138. # k4y=f2(x[i],y[i],(vy[i]+(h*k3vy)),vy[i])
  139. # k4vx=f3m((x[i]+h*(k3x)),(y[i]+(h*(k3y))),vx[i],vy[i])
  140. # k4vy=f4m((x[i]+h*(k2x)),(y[i]+(h*(k2y))),vx[i],vy[i])
  141. #
  142. # x[i+1]=x[i]+(h/6)*(k1x+2*k2x+2*k3x+k4x)
  143. # y[i+1]=y[i]+(h/6)*(k1y+2*k2y+2*k3y+k4y)
  144. # vx[i+1]=vx[i]+(h/6)*(k1vx+2*k2vx+2*k3vx+k4vx)
  145. # vy[i+1]=vy[i]+(h/6)*(k1vy+2*k2vy+2*k3vy+k4vy)
  146. #
  147. # if (np.sqrt(x[i]**2+y[i]**2)<R):
  148. # break
  149. #
  150. # for i in range(en):
  151. # mx[i]=xm+R*np.cos(i*h)
  152. # my[i]=ym+R*np.sin(i*h)
  153. #
  154. # plt.plot(ex,ey)
  155. # plt.plot(x,y)
  156. # plt.plot(mx,my)
  157. # plt.axis('equal')
  158. # plt.show()
  159. #
  160. # mx=np.zeros(en)
  161. # my=np.zeros(en)
  162. #
  163. # for i in range(en):
  164. # mx[i]=xm+R*np.cos(i*h)
  165. # my[i]=ym+R*np.sin(i*h)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement