Advertisement
ksoltan

orbit.m

Nov 23rd, 2015
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.40 KB | None | 0 0
  1. %% Calculate the orbit of planet around star over x amount of days
  2. % Assume orbiting around the Sun. Input corresponding planet mass and
  3. % distance from the Sun.
  4. function [T, Y] = orbit(days)
  5.     pos_star = [0; 0];
  6.     mass_star = 2 * 1e30; % kg
  7.     m = 1.8986 * 1e27; % kg
  8.     init_velocity = [0; 13.06 * 1e3]; % m / s
  9.     dist_from_sun = 7.779 * 1e11; % m
  10.     init_pos = pos_star + [dist_from_sun; 0];
  11.     [T, Y] = simulate();
  12.    
  13.     function [T, Y] = simulate()
  14.         [T, Y] = ode45(@change, [0, days * 24 * 3600], [init_pos; init_velocity]);
  15.         %comet(Y(:, 1), Y(:, 2))
  16.     end
  17.  
  18.     %% To model orbit, necessary to know position of orbiting body and its velocity.
  19.     % These change due to velocity and acceleration, respectively.
  20.     % Assume star being orbited does not move
  21.     function res = change(t, params)
  22.         % Unpack variables
  23.         Pos = params(1:2);
  24.         Velocity = params(3:4);
  25.         dPosdt = Velocity; % change in position is velocity
  26.         dVelocitydt = acceleration(t, params); % change in v is acceleration
  27.         res = [dPosdt; dVelocitydt];
  28.     end
  29.  
  30.     function res = acceleration(t, params)
  31.         % Unpack variables
  32.         Pos = params(1:2);
  33.         Velocity = params(3:4);
  34.         % returns vector of gravity force from star on planet
  35.         Fg = gravity_force_func(pos_star, mass_star, Pos, m);
  36.         res = [Fg(1) / m; Fg(2) / m];
  37.     end
  38.  
  39. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement