Small Satellites

Home » Posts tagged 'Numerical Solution'

Tag Archives: Numerical Solution

Two Body Problem Numerical Solution,Satellite – Earth, R & V after dT

The initial position and velocity of an earth orbiting satellite in earth centered inertial frame is known. In this example we will numerically solve fundamental equation of relative two-body motion to find the distance of the satellite from the center of the earth and its speed after 24 hours.

clc;
clear all;
R0 = [6750 0 0];          %[km]
V0 = [0 10.5 0];          %[km/s]
mu = 398600;            % Earth’s gravitational parameter [km^3/s^2]
t = 0;                  % initial time
dt = 10;                % time step [s]
dT = 24*3600;           % Time interval [s]
% Using fourth-order Runge–Kutta method to solve fundamental equation
% of relative two-body motion
F_r = @(R) -mu/(norm(R)^3)*R;
Rd = V0; R  = R0;
i = 1;
while (t <= dT)
    Rv(i,:) = R;
    tv(i) =t;
    k_1 = dt*F_r(R);
    k_2 = dt*F_r(R+0.5*k_1);
    k_3 = dt*F_r(R+0.5*k_2);
    k_4 = dt*F_r(R+k_3);
    Rd  = Rd + (1/6)*(k_1+2*k_2+2*k_3+k_4);
    Vv(i,:) = Rd;
    R   = R + Rd*dt;
    t   = t+dt;
    i = i+1;
end
rn = (Rv(:,1).^2+Rv(:,2).^2+Rv(:,3).^2).^0.5;   % Radius Vector
vn = (Vv(:,1).^2+Vv(:,2).^2+Vv(:,3).^2).^0.5;   % Speed Vector
fprintf('Distance from Earth center = %4.2f [km] \n',norm(R));
fprintf('Satellite speed= %4.4f [km/s] \n',norm(Rd));
Distance from Earth center = 77061.78 [km] 
Satellite speed= 1.5791 [km/s]

Plots

figure(1);
hold on;grid on;
plot(tv/3600,rn);
ylabel('Altitude [km]');
xlabel('Time [hour]');
title('Distance variation of the satellite from the center of the Earth');
figure(2);
hold on;grid on;
plot(tv/3600,vn);
ylabel('Speed [km/s]');
xlabel('Time [hour]');
title('Satellite speed variation');

Satellite_two_body_problem_dT_01 Satellite_two_body_problem_dT_02

Two Body Problem Numerical Solution,Satellite – Earth

Given initial position and velocity of an earth orbiting satellite at a given instant.In this example we will numerically solve fundamental equation of relative two-body motion to find the maximum altitude(apogee altitude) reached by the satellite.

clc;
clear all;
R0 = [3102 5369 2625];          %[km]
V0 = [-6.426 0.7735 5.943];     %[km/s]
r = norm(R0);           % Initial radius  [km]
v = norm(V0);           % Initial speed   [km/s]
mu = 398600;            % Earth’s gravitational parameter [km^3/s^2]
a = mu/(2*mu/r - v^2);  % Semimajor Axis [km]
T = 2*pi*a^1.5/mu^0.5;  % Orbital period [s]
R_earth = 6378;         % Earth radius [km]
dt = T/1000;            % time step [s]
t = 0;                  % initial time
% Using fourth-order Runge–Kutta method to solve fundamental equation
% of relative two-body motion
F_r = @(R) -mu/(norm(R)^3)*R;
Rd = V0; R  = R0;
i = 1;
while (t <= T)
    Rv(i,:) = R;
    tv(i) =t;
    k_1 = dt*F_r(R);
    k_2 = dt*F_r(R+0.5*k_1);
    k_3 = dt*F_r(R+0.5*k_2);
    k_4 = dt*F_r(R+k_3);
    Rd  = Rd + (1/6)*(k_1+2*k_2+2*k_3+k_4);
    R   = R + Rd*dt;
    t   = t+dt;
    i = i+1;
end
rn = (Rv(:,1).^2+Rv(:,2).^2+Rv(:,3).^2).^0.5;
Alt = rn - R_earth; % Altitude Vector
Alt_max  = max(Alt); % [km]
fprintf('Maximum Altitude = %4.2f [km] \n',Alt_max);
Maximum Altitude = 6249.10 [km]

Ploting the altitude variation during one orbit

figure(1);
hold on;grid on;
plot(tv/3600,Alt);
ylabel('Altitude [km]');
xlabel('Time [hour]');
title('Satellite altitude variation during one orbit');

Earth_Satellite_two_body_problem_01

 

%d bloggers like this: