Я знаю, как использовать ode15s или другой решатель од в MATLAB, в чем я не уверен, является ли этот код (из CellML ) мне неясным:
[VOI, STATES] = ode15s(@(VOI, STATES)computeRates(VOI, STATES, CONSTANTS), tspan, INIT_STATES, options);
Более конкретно, что означает следующее (?):
@(VOI, STATES)computeRates(VOI, STATES, CONSTANTS)
Заголовок функции "computeRates" следующий:
function [RATES, ALGEBRAIC] = computeRates(t, STATES, CONSTANTS)
Я знаю, что "@computeRates" означает дескриптор функции, но что означает
@(VOI, STATES)computeRates(VOI, STATES, CONSTANTS)
Почему он ставит (VOI, STATES) между @ и "computeRates"?
Кстати, согласно справке MATLAB, если мы хотим интегрировать следующую функцию:
function dy = rigid(t,y)
dy = zeros(3,1); % a column vector
dy(1) = y(2) * y(3);
dy(2) = -y(1) * y(3);
dy(3) = -0.51 * y(1) * y(2);
нам нужно только написать:
options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);
[T,Y] = ode45(@rigid,[0 12],[0 1 1],options)