Во-первых, правильный способ обработки kmat
состоит в том, чтобы сделать его входным аргументом F.m
function result = F(x,kmat)
result = kmat*x;
end
. Во-вторых, входная функция ode45
должна быть функцией со входами t
и x
(возможно, векторы t
являются зависимой переменной, а x
является зависимой). Поскольку ваша функция F
не имеет t
в качестве входного аргумента, и у вас есть дополнительный параметр kmat
, вы должны сделать небольшую анонимную функцию, когда вы вызываете ode45
ode45(@(t,x) F(x,kmat),[tstart tend],x_0)
Если ваша производная функция была function result=derivative(t,x)
, вы просто выполняете ode45(@derivative,[tstart tend],x_0)
, как сказал Эрик.
Я считаю, что F
в ode45(F,...)
должен быть дескриптором функции, то есть @F
. Кроме того, вы можете посмотреть эту страницу документации MATLAB для разных методов передачи дополнительных параметров для функций.