How to solve for multiple 'objects' in single ode function
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi,
So I am trying to model the solar system by using ODE45 however I have run into an issue. Due to later concerns I'm trying to make the whole system dynamic and make it so that the planets interact with each other. I have a set of initial coordinates I have calculated for each of the planets, and I have calculated the distance between the planets and the sun for each of the planets I have. The next part I wanted to calculate was the acceleration for each of the planets however I have run into a problem I am not entirely clear on how to solve. The ODE wants the output value to be a column vector however this seems like a massive issue as having 4 parameters (at least if not more) on a single column for 8 planets would make the list very long. Currently it creates a matrix but this will only run the ODE once and it fails with an error.
I have not included the importing of the initial values as they are in spreadsheets I imported and don't believe it is relevant
Thanks
%% Planet motion
G = 6.67e-11; %Gravitational Constant
u = G*planetStart(1,6); %Gravitational Constant multiplied by sun mass
res = 1; %The resolution the code should run at in days
last = 365; %The number of days the code should run for (from 1/1/19)
tSpan = 0:res:last;
[t,x] = ode45(@(t,x) pos(planetsXY,planetsVel,planetsMass,u),tSpan,planetsXY);
planetsX = x(:,1); %Planets x coordinates
planetsY = x(:,2); %Planets y coordinates
planetsRad = x(:,3); %Distance between planets and sun
planetsAcc = x(:,4); %Acceleration of each planet
function ode45 = pos(planetsXY,planetsVel,planetsMass,u)
ode45 = [0 0 0 0]'; %Transposed matrix of initial values
for i = 1:9
ode45(i,3) = abs(norm(planetsXY(i,:)));
ode45(i,4) = u/ode45(i,3)^2
end
end
0 commentaires
Réponses (1)
Walter Roberson
le 27 Mar 2019
You can reshape the boundary values into a matrix to work with them and you can create your results in a matras long as you reshape to a vector just before you return.
Voir également
Catégories
En savoir plus sur Earth and Planetary Science dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!