Advertisement
Guest User

Untitled

a guest
Dec 10th, 2019
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.41 KB | None | 0 0
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. import matplotlib.animation as animation
  4.  
  5. #g = 39.478
  6. g = 2.959*10**-4
  7. m = np.array([1.47,4/7*0.00668212,0.00668212*9/7,0.00668212])
  8. r0 = [-0.5688,0]
  9. r1 = [14.5,0]
  10. r2 = [38,0]
  11. r3 = [68,0]
  12. v0 = np.array([0,-0.0000467])
  13. v1 = np.array([0,1.12*(g*m[0]/r1[0])**(1/2)])
  14. v2 = np.array([0,1.05*(g*m[0]/r2[0])**(1/2)])
  15. v3 = np.array([0,0.95*(g*m[0]/r3[0])**(1/2)])
  16.  
  17. s = np.array([r0[0],r0[1],r1[0],r1[1],r2[0],r2[1],r3[0],r3[1],v0[0],v0[1],v1[0],v1[1],v2[0],v2[1],v3[0],v3[1]])
  18.  
  19.  
  20.  
  21. def funktio(s,t):
  22. r0 = s[:2]
  23. r1 = s[2:4]
  24. r2 = s[4:6]
  25. r3 = s[6:8]
  26. v0 = s[8:10]
  27. v1 = s[10:12]
  28. v2 = s[12:14]
  29. v3 = s[14:16]
  30. r01 = r1-r0
  31. r02 = r2-r0
  32. r03 = r3-r0
  33. r12 = r2-r1
  34. r13 = r3-r1
  35. r23 = r3-r2
  36. r01s = (r01*r01).sum()**1.5
  37. r02s = (r02*r02).sum()**1.5
  38. r03s = (r03*r03).sum()**1.5
  39. r12s = (r12*r12).sum()**1.5
  40. r13s = (r13*r13).sum()**1.5
  41. r23s = (r23*r23).sum()**1.5
  42.  
  43. a0 = -g*m[1]*-1*r01/r01s - g*m[2]*-1*r02/r02s- g*m[3]*-1*r03/r03s
  44. a1 = -g*m[0]*r01/r01s - g*m[2]*-1*r12/r12s - g*m[3]*-1*r13/r13s
  45. a2 = -g*m[0]*r02/r02s - g*m[1]*r12/r12s - g*m[3]*-1*r23/r23s
  46. a3 = -g*m[0]*r03/r03s - g*m[1]*r13/r13s -g*m[2]*r23/r23s
  47.  
  48. return np.array([v0[0],v0[1],v1[0],v1[1],v2[0],v2[1],v3[0],v3[1],a0[0],a0[1],a1[0],a1[1],a2[0],a2[1],a3[0],a3[1]])
  49.  
  50.  
  51.  
  52. def rk4(s, dt, t):
  53. k1 = funktio(s, t)*dt
  54. k2 = funktio(s+k1/2.0, t+dt/2.0)*dt
  55. k3 = funktio(s+k2/2.0, t+dt/2.0)*dt
  56. k4 = funktio(s+k3, t+dt)*dt
  57. return s + (k1+2*k2+2*k3+k4)/6.0
  58.  
  59. p1x = []
  60. p2x = []
  61. p3x = []
  62. p4x = []
  63. p1y = []
  64. p2y = []
  65. p3y = []
  66. p4y = []
  67. t = 0
  68. dt = 2
  69. i = 0
  70. while t < 365*300:
  71. s = rk4(s,dt,t)
  72. i = i+1
  73. t = t +dt
  74. if (i%100 == 0):
  75. p1x.append(s[0])
  76. p1y.append(s[1])
  77. p2x.append(s[2])
  78. p2y.append(s[3])
  79. p3x.append(s[4])
  80. p3y.append(s[5])
  81. p4x.append(s[6])
  82. p4y.append(s[7])
  83. print(s[1])
  84.  
  85.  
  86.  
  87. plt.axes().set_aspect('equal')
  88. plt.ylim(-70,70)
  89. plt.xlim(-70,70)
  90. plt.title('Planeettojen radat 10 vuoden aikana')
  91. plt.xlabel('X(Au)')
  92. plt.ylabel('Y(Au)')
  93. plt.plot(p1x,p1y, 'b.',label = 'Aurinko',markersize = 3)
  94. plt.plot(p2x,p2y, 'r.',label = 'Planeetta A',markersize = 3)
  95. plt.plot(p3x,p3y, 'c.',label = 'Planeetta B',markersize = 3)
  96. plt.plot(p4x,p4y, 'k.',label = 'Planeetta C',markersize = 3)
  97. plt.legend()
  98. plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement