Loop to solve ODE45 multiple times?
Mostra commenti meno recenti
Hello I made this loop to try to solve this system of diferential equations with different initial conditions but im not sure if is ok since im only obtaining a matrix of 45 values where I suppose to get more. This is my code
kba= 1;
kmax= 10000000;
r = 1;
co= 1;
for a = gen10m
for b = gen11m
for c = gen01m
for d = gen00m
k= kba + kmax *(((b + a)/(a + b + c + d))*((b + c)/(a + b + c + d)));
f = @(t,x) [(r - (1 + 1) * co) * x(1) * (1 - ((x(1) + x(2) + x(3) + x(4))/k)); (r - (1 + 0) * co) * x(2) * (1 - ((x(1) + x(2) + x(3) + x(4))/k));
(r - (0 + 1) * co) * x(3) * (1 - ((x(1) + x(2) + x(3) + x(4))/k)); (r - (0 + 0) * co) * x(4) * (1 - ((x(1) + x(2) + x(3) + x(4))/k))];
[t,x] = ode45(f,[0 1],[a b c d]);
gen10m,gen11m, etc...are vectors of the same size so I want to use eah value of these vectors as initial conditions and solved this system for all the values of the vector. Do you think my code is wrong? Or maybe I have to improve it and add a way to save the data each time it is solve for a particular initial conditions?
Risposte (1)
Jan
il 20 Giu 2018
Currently you overwrite the results obtained in each iteration. Maybe you want:
nResult = length(gen10m) * length(gen11m) * length(gen01m) * length(gen00m);
Result = cell(1, nResult);
iResult = 0;
for a = gen10m
for b = gen11m
for c = gen01m
for d = gen00m
...
[t,x] = ode45(f,[0 1],[a b c d]);
iResult = iResult + 1;
Result{iResult} = [t, x];
end
end
end
end
8 Commenti
pauldjn
il 21 Giu 2018
Jan
il 22 Giu 2018
I do not understand the comment. What does "not evaluating the corresponding values of the vectors is doing it one by the rest of values" mean? Where do you get which "exponential quantity of data"? Which indices do you want to modify?
Torsten
il 22 Giu 2018
nResult = length(gen10m);
Result = cell(1, nResult);
for iResult = 1:nResult
a = gen10m(iResult);
b = gen11m(iResult);
c = gen01m(iResult);
d = gen00m(iResult);
...
[t,x] = ode45(f,[0 1],[a b c d]);
Result{iResult} = [t, x];
end
Jan
il 22 Giu 2018
@PAUL DAMIAN JIMENEZ NUÑO: Please explain, what gen10m etc are. I cannot follow the description in your comment. What does "saving the first value (1)" mean? And "using the rest of the values of the other vectors"? Please give an example.
pauldjn
il 22 Giu 2018
pauldjn
il 22 Giu 2018
Jan
il 23 Giu 2018
Categorie
Scopri di più su Programming in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!