У меня есть следующая функция:
function ypdiff = ypdiff(t,y)
a = 0.01;
b = 0.1;
ypdiff(1) = -a*y(1)*y(2);
ypdiff(2) = b*y(1)*y(2)-b*y(2);
ypdiff(3) = b*y(2);
ypdiff = [ypdiff(1) ypdiff(2) ypdiff(3)]';
Если бы я хочу решить это, я вызвал бы ode45 функцию следующим образом:
[t y] = ode45(@ypdiff, [to tf], yo);
Но если бы я хочу передать параметр этой функции, как я использовал бы функцию ode45? А именно, я пробую за следующую формулировку:
function ypdiff = ypdiff(t,y,u)
a = 0.01;
b = 0.1;
ypdiff(1) = -a*u*y(1)*y(2);
ypdiff(2) = b*u*y(1)*y(2)-b*y(2);
ypdiff(3) = b*u*y(2);
ypdiff = [ypdiff(1) ypdiff(2) ypdiff(3)]';
Вы можете использовать анонимную функцию в Matlab (аналогично лямбда-функциям на других языках):
u = 1.2;
[t y] = ode45(@(t, y) ypdiff(t, y, u), [to tf], yo);