Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scilab 3.71 KB | None | 0 0
  1. // Projektna naloga - Binarna zvezda
  2. clear
  3. // Vhodni podatki
  4.  
  5.     // Parametri simulacije
  6. tMax = 200;            // Čas simuliranja [yr]
  7. dt = 0.01;                 // Časovni korak [yr]
  8. nMax = 1000;            // Maksimalno število iteracij
  9.  
  10.     // Konstante
  11. G0 = 6.67e-11;          // Gravitacijska konstanta [N m^2 / kg^2]
  12. M0 = 1.98892e30;        // Enota za maso sonca [kg]
  13. au = 149597870700;      // Astronomska enota [m]
  14. yr = 365.25 * 24 * 3600 // Leto [s]
  15.  
  16.     // Pretvorba gravitacijske konstante
  17. G = G0 * M0 * yr ^ 2 / au ^ 3 // [au^3 / M yr^2]
  18.  
  19.     // Zvezda 1
  20. r1 = zeros(2);          // Položaj zvezde 1 [au]
  21. r1(1) = 0;
  22. r1(2) = 0;
  23. v1 = zeros(2);          // Hitrost zvezde 1 [au/yr]
  24. v1(1) = 1.857;
  25. v1(2) = 0.058;
  26. m1 = 2.063;             // Masa zvezde 1 [M0]
  27. F1 = zeros(2);          // Sila na zvezdo 1 [M0 au / yr^2]
  28. a1 = zeros(2);          // Pospešek zvezde 1 [au / yr^2]
  29.  
  30.     // Zvezda 2
  31. r2 = zeros(2);          // Položaj zvezde 2 [au]
  32. r2(1) = 7.48;
  33. r2(2) = 5.46;
  34. v2 = zeros(2);          // Hitrost zvezde 2 [au/yr]
  35. v2(1) = -2.216;
  36. v2(2) = -0.1175;
  37. m2 = 1.018;             // Masa zvezde 2 [M0]
  38. F2 = zeros(2);          // Sila na zvezdo 2 [M0 au / yr^2]
  39. a2 = zeros(2);          // Pospešek zvezde 2 [au / yr^2]
  40.  
  41. u = zeros(2);           // Smerni vektor od zvezde 1 do zvezde 2
  42. e = zeros(2);           // Enotski vektor
  43.  
  44.  
  45.  
  46. // Izpis
  47. n = tMax / dt + 1;
  48. i = 1                   // Števec
  49. F1x = zeros(n);
  50. F1y = zeros(n);
  51. F2x = zeros(n);
  52. F2y = zeros(n);
  53.  
  54. a1x = zeros(n);
  55. a1y = zeros(n);
  56. a2x = zeros(n);
  57. a2y = zeros(n);
  58.  
  59. v1x = zeros(n);
  60. v1y = zeros(n);
  61. v2x = zeros(n);
  62. v2y = zeros(n);
  63. v1x(1) = v1(1);
  64. v1y(1) = v1(2);
  65. v2x(1) = v2(1);
  66. v2y(1) = v2(2);
  67.  
  68. r1x = zeros(n);
  69. r1y = zeros(n);
  70. r2x = zeros(n);
  71. r2y = zeros(n);
  72. r1x(1) = r1(1);
  73. r1y(1) = r1(2);
  74. r2x(1) = r2(1);
  75. r2y(1) = r2(2);
  76.  
  77.  
  78.  
  79. function r = izracunRazdalje (r1, r2)
  80.     x = r2(1) - r1(1);
  81.     y = r2(2) - r1(2);
  82.     r = sqrt(x ^ 2 + y ^ 2);
  83. endfunction
  84.  
  85. function F1 = izracunSile(e, r)
  86.     F1(1) = G * m1 * m2 * e(1) / r^2;
  87.     F1(2) = G * m1 * m2 * e(2) / r^2;
  88. endfunction
  89.  
  90.  
  91. // Program
  92.  
  93. for t = 0 : dt : tMax
  94.    
  95.     // Smerni vektor
  96.     u(1) = r2(1) - r1(1);
  97.     u(2) = r2(2) - r1(2);
  98.    
  99.     // Razdalja med zvezdama
  100.     r = izracunRazdalje(r1, r2);
  101.    
  102.     // Enotski vektor
  103.     e(1) = u(1) / r;
  104.     e(2) = u(2) / r;
  105.    
  106.     // Izračun sile
  107.     F1 = izracunSile(e, r);
  108.     F2(1) = -F1(1);
  109.     F2(2) = -F1(2);
  110.    
  111.     // Izračun pospeška
  112.     a1(1) = F1(1) / m1;
  113.     a1(2) = F1(2) / m1;
  114.     a2(1) = F2(1) / m2;
  115.     a2(2) = F2(2) / m2;
  116.    
  117.     // Hitrost in lega imata podane začetne vrednosti
  118.     if(i > 1) then
  119.     // Izračun hitrosti
  120.     v1(1) = v1x(i - 1) + a1(1) * dt;
  121.     v1(2) = v1y(i - 1) + a1(2) * dt;
  122.     v2(1) = v2x(i - 1) + a2(1) * dt;
  123.     v2(2) = v2y(i - 1) + a2(2) * dt ;
  124.    
  125.     // Izračun lege
  126.     r1(1) = r1x(i - 1) + v1(1) * dt;
  127.     r1(2) = r1y(i - 1) + v1(2) * dt;
  128.     r2(1) = r2x(i - 1) + v2(1) * dt;
  129.     r2(2) = r2y(i - 1) + v2(2) * dt;
  130.    
  131.     end
  132.    
  133.     // Zapis podatkov za graf
  134.     F1x(i) = F1(1);
  135.     F1y(i) = F1(2);
  136.     F2x(i) = F2(1);
  137.     F2y(i) = F2(2);
  138.    
  139.     a1x(i) = a1(1);
  140.     a1y(i) = a1(2);
  141.     a2x(i) = a2(1);
  142.     a2y(i) = a2(2);
  143.    
  144.     if(i > 1) then
  145.     // Izračun hitrosti
  146.     v1x(i) = v1(1);
  147.     v1y(i) = v1(2);
  148.     v2x(i) = v2(1);
  149.     v2y(i) = v2(2);
  150.    
  151.     // Izračun lege
  152.     r1x(i) = r1x(i - 1) + v1(1) * dt;
  153.     r1y(i) = r1y(i - 1) + v1(2) * dt;
  154.     r2x(i) = r2x(i - 1) + v2(1) * dt;
  155.     r2y(i) = r2y(i - 1) + v2(2) * dt;
  156.    
  157.  
  158.     end
  159.     R1x = r1x(i);
  160.     R1y = r1y(i);
  161.    
  162.     R2x = r2x(i);
  163.     R2y = r2y(i);
  164.     i = i + 1
  165.    
  166.     //plot(t, R1x)
  167. end
  168.  
  169. plot(r1x, r1y);
  170. plot(r2x, r2y);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement