Search All of the Math Forum:
Views expressed in these public forums are not endorsed by
NCTM or The Math Forum.
|
|
Qiming
Posts:
10
Registered:
12/21/12
|
|
ODE solver
Posted:
Dec 27, 2012 11:22 AM
|
|
Hi:
I have a question using ODE solvers (say, ode45).
I want to save some parameter values inside the ODE function. For instance, I would like to save parameter "u" which is inside the ODE function for future use. I define the global "u", and also a counter "COUNT".
As I know, ode45 is essentially a "loop", it integrates the ODE function as an adaptive stepsize or a pre-defined fixed step size. The functions are given as below (The following codes are only for the purpose of testing):
Main function:
global u COUNT; COUNT = 0;
t0 = 0; tf = 5; tSpan = [ t0, tf ]; y0 = [ 1; 2; 3 ]; [t y] = ode45(@myode, tSpan, y0);
ODE function:
function ydot = myode(~,y)
global u COUNT; COUNT = COUNT + 1;
a = 0.01; b = 0.1; ydot (1) = -a*y(1)*y(2); ydot (2) = b*y(1)*y(2)-b*y(2); ydot (3) = b*y(2); u(COUNT) = y(1)+y(2)+y(3); ydot = [ydot (1) ydot (2) ydot (3)]';
The code can be ran without errors or warnings. But the things is, when I checked the workspace, "COUNT = 61", but "length(y) = 41". I think these two values should be the same. I also tried using a fixed stepsize, but they're still different. How come they're different?
Thanks for any help.
Qiming
|
|
|
|