У меня есть случай использования следующим образом:Как передать ode45 odefun, который принимает два аргумента?
Внутри F.m
У меня есть функция, которая принимает F
в качестве аргумента 2 x 1
матрицы x
. F
требуется матрица умножить матрицу kmat
на x
. kmat
- это переменная, которая генерируется скриптом.
Итак, что я делал, было установлено kmat
быть глобальным в сценарии:
global kmat;
kmat = rand(2);
В F.m
:
function result = F(x)
global kmat;
result = kmat*x;
end
Тогда, наконец, в сценарии у меня есть (x_0
уже определен как подходящая матрица 2 x 1
, и tstart
и tend
- целые положительные числа):
xs = ode45(F, [tstart, tend], x_0);
Однако это вызывает ошибку:
Error using F (line 3)
Not enough input arguments.
Error in script (line 12)
xs = ode45(F, [tstart, tend], x_0);
Что здесь происходит, и что я могу сделать, чтобы исправить это? В качестве альтернативы, как правильно пройти kmat
до F
?