Loop to solve ODE45 multiple times?
이전 댓글 표시
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?
답변 (1개)
Jan
2018년 6월 20일
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
pauldjn
2018년 6월 21일
Jan
2018년 6월 22일
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
2018년 6월 22일
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
2018년 6월 22일
@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
2018년 6월 22일
pauldjn
2018년 6월 22일
Jan
2018년 6월 23일
카테고리
도움말 센터 및 File Exchange에서 Programming에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!