How do I pass known variables into my ODE45 function?

Hi,
I am attempting to pass a set of variables (a1,a2,a3,...an - these numbers can be integers,vectors and arrays) into an ODE function to avoid having to call these variables on each iteration of the ODE as the call function is quiet slow. I want to make it so that I call the variables (from excel files) before the ODE and use these variables as inputs to the ODE, therefore avoiding the need to call the function in the ODE function itself, but do not know how to do this.
Could anybody help with letting me know the syntax to read these variables into the ODE?
The set up of my ODE code is shown here:
at = 1e-5*ones(Neqn,1); % Absolute tolerance for ODE
tE = 0; % Start time for ODE
endtime = 50e3; % End time for ODE
span = [tE endtime]; % ODE time span
options = odeset('RelTol',1e-4,'AbsTol',at);
[t,y] = ode45(@Reactor_simple_ODE,span,init,options);

 采纳的回答

5 个评论

Hi Walter, Thank you for the link. I'm still not sure how to implement this for an ODE. Would you be able to clarify the syntax?
Lets say a I have variables as shown: a1 = [1, 2, 3, 4]; a2 = 10000; a3 = [ 1 1 1, 2 2 2, 3 3 3];
And I wish to pass these values to the ODE, could you show me a sample syntax?
I have tried: * [t,y] = ode45(@Reactor_simple_ODE,span,init,options, a1, a2, a3); * [t,y,a1, a2, a3] = ode45(@Reactor_simple_ODE,span,init,options); * I also tried putting the variables in the options of the ODE.
[T,Y] = ode45(@(t,y)Reactor_simple_ODE(t,y,a1,a2,a3),span,init,options);
Best wishes
Torsten.
This works perfectly, much more efficient now.
Thank you Torsten and Walter
It works, I appreciate it @Torsten

请先登录,再进行评论。

更多回答(0 个)

类别

Community Treasure Hunt

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

Start Hunting!

Translated by