Решатель ODE, создающий ошибку времени выполнения - недостаточно входных аргументов [duplicate]

0
задан user89 4 April 2015 в 02:27
поделиться

2 ответа

Во-первых, правильный способ обработки 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), как сказал Эрик.

1
ответ дан David 26 August 2018 в 19:53
поделиться

Я считаю, что F в ode45(F,...) должен быть дескриптором функции, то есть @F. Кроме того, вы можете посмотреть эту страницу документации MATLAB для разных методов передачи дополнительных параметров для функций.

0
ответ дан Erik 26 August 2018 в 19:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: