How to use my numeric array results as input values for an ODE?

1 Ansicht (letzte 30 Tage)
So I have the following code:
n = 10 ;
result = zeros(n,5 );
for k=1:n ;
A0=1;P0=29;g=rand;p=rand;B=rand ;
result(k,:) = [A0,P0,g,p,B ];
end;
Which produces a 10x5 numeric array as the result.
And I'd like to use my results from there as the input values to solve this equation ten times:
tspan=[1 7];
[t,x] = ode45(@(t,x) [-g*x(1) + p*x(1); -x(1)*x(2)+ B*x(2)], tspan, [A0 P0]);
Is this possible?
Thanks in advance!

Akzeptierte Antwort

Star Strider
Star Strider am 4 Jun. 2019
Try this:
n = 10 ;
result = zeros(n,5 );
for k=1:n ;
A0=1;P0=29;g=rand;p=rand;B=rand ;
result(k,:) = [A0,P0,g,p,B ];
end
for k = 1:size(result,1)
tspan=linspace(0,7,50);
ODE = @(t,x,g,p,B) [-g*x(1) + p*x(1); -x(1)*x(2)+ B*x(2)];
[t,x(:,:,k)] = ode45(@(t,x) ODE(t,x,result(k,3),result(k,4),result(k,5)), tspan, [result(k,1) result(k,2)]);
end
It saves the output to a 3D matrix, as previously.
  4 Kommentare
Thomas Veith
Thomas Veith am 4 Jun. 2019
That is perfect, thank you so much!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu 2-D and 3-D Plots finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by