solving many linear differential equations through ODE solver.

1 vue (au cours des 30 derniers jours)
P K
P K le 6 Jan 2019
Commenté : P K le 17 Jan 2019
I am not sure whether my approach is good or not, because my simulation takes ENORMOUS amount of time in execution.
I have a general form of differential equations , which contain summation signs, and it is suumed over i,j. When i,j varies, the number of variables in the differential equations also changed. Index i and j are related with a relation.That means the number of variable are also dependent on i & j .So, here is what i am planning
syms H(i,j) % generalized variable
% Storing the varaibles
n=10 %number of variables (This would change)
for i=1:n
for j=1:n
if i+j==... && i/2==...
T(i,j)=H(i,j) % Store the variable
end
end
%% Now i am using T as variable, and using 4 "for loops" to form the differential equations.
% Then solve it through ODE .
The code is working for small value of "n". But it takes 3 days when n=50. And runs out of memory when n=60. How can i optimize my code and avoid syms ? I can observe, that the major problem is in creating the equations.Am i doing wrong in creating the variables like this ? Is there any way to overcome this ?

Réponse acceptée

Torsten
Torsten le 7 Jan 2019
Don't use symbolic variables together with "many" differential equations.
Use a numerical ODE integrator instead (e.g. ODE15S).
  11 commentaires
Torsten
Torsten le 16 Jan 2019
You didn't write the differential equations for P and P1.
These have to be inserted in the lines
dP = ?
dPn(1) = ?
Further, "kp" has to be specified at the beginning of the function.
P K
P K le 17 Jan 2019
Thanks Torsten,Madhan ravi and Bjorn Gustavsson. I really appreciate your help.It saved a lot of computation time.
Since I am not from programming background, It took so long for me in accepting your answer.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by