delta_t = 0.1;
t = 1;
G = 1;
nbodies = 4;
mass = zeros(1,nbodies);
position = zeros(nbodies,2);
distance = zeros(nbodies,nbodies);
alpha = zeros(nbodies,nbodies);
velocity = zeros(nbodies,nbodies);
acceleration = zeros(nbodies,nbodies);
position = [0 0;100 30;500 150;840 325];
mass = [3 0.01 0.02 0.03];
for t = [1:5000]
for n = [1:nbodies]
for m = [1:nbodies]
if n == m || distance(m,n) > 0
distance(n,m) = distance(m,n);
alpha(n,m) = pi-alpha(m,n);
else
distance(n,m) = sqrt( (position(n,1,t)-position(m,1,t))^2 + (position(n,2,t)-position(m,2,t))^2);
alpha(n,m) = atan( (position(n,1,t)-position(m,1,t)) / (position(n,2,t)-position(m,2,t)) );
end
if n ~= m
acceleration(n,m) = G*mass(m)/distance(n,m)^2;
velocity(n,m) = velocity(n,m) + acceleration(n,m)*delta_t;
position(n,1,t+1) = position(n,1,t) + cos(alpha(n,m))*velocity(n,m)*delta_t;
position(n,2,t+1) = position(n,2,t) + sin(alpha(n,m))*velocity(n,m)*delta_t;
else
end
end
end
distance = zeros(nbodies,nbodies);
end
disp('initial positions = ')
disp(position(:,:,1))
disp('final positions = ')
disp(position(:,:,t))