Ode45 в MATLAB. Как изменить параметр внутри него при вызове?

Я новичок в Matlab. Надеюсь, вы сможете мне помочь. Я должен решить систему оду, используя функцию ODE45. Вот функция, которая описывает мои уравнения.

function dNdt = rateEquations(t, y)
  %populations of corresponding state
  Ng = y(1);
  Ns = y(2);
  Nt =  y(3);

  %All constants used are dropped for the sake of easy reading.

Примечание Ф. параметра

  %rate equations
  dNs = s0 * Ng * F - Ns/ t_S1;
  dNt = Ns / t_ISC - Nt / t_T1;
  dNg = -dNt - dNs;

  dNdt = [dNg; dNs; dNt];

end

тогда, в моем сценарии .m-файл я вызываю функцию ode45 в "for loop". Во время каждой итерации я должен изменить параметр F и передать его в мою функцию "rateEquations". Но я не знаю как это реализовать.

for T = Tmin: dt : Tmax
  %initial conditions
  initialConditions = [N0 0 0];
  timeSpan = [T T+dt];

перед вызовом ODE45 F измениться.

  [t,N] = ode45('rateEquations', timeSpan, initialConditions)

и так далее ...

end

спасибо заранее.

1 ответов


вы хотите сделать F аргумент вашей производной функции и передайте правую анонимную функцию в ode45:

[t,N] = ode45(@(t,y) rateEquations(t,y,F), timeSpan, initialConditions)