Передача определенной функции в ODE Solver - PullRequest
1 голос
/ 08 января 2012

Я определил функцию

function dy = toggle(t,y,p)
dy = zeros(2,1);
dy(1) = - y(1) + p(1)./(1+y(2).^p(2));
dy(2) = - y(2) + p(1)./(1+y(1).^p(3));

и сохранил его в файле .m с тем же именем, что и у функции. В другом файле, caltoggle.m, я пишу:

[T,Y] = ode45(@toggle,[0 100],[0.2,0.1],[],[3,2,2]);

Когда я запускаю скрипт caltoggle.m, я получаю сообщение об ошибке:

??? [T,Y] = ode45(@
              |
Missing variable or function.

Error in ==> C:\MATLABR11\work\caltoggle.m
On line 1  ==> 

caltoggle

Приведенный выше код является примером из учебника, поэтому должен быть правильным. Моя проблема в общем, я не могу вызвать определенную функцию.

Ответы [ 2 ]

0 голосов
/ 09 января 2012

В документации Matlab для решателей ODE все примеры передаются в качестве первого аргумента ode45 функции 2 переменных, а не трех, как ваша функция toggle. Можете ли вы изменить функцию toggle, чтобы она принимала только два входных аргумента, и посмотрите, решит ли это проблему (в качестве первого теста просто установите p(:)=1 или что-то подобное)

0 голосов
/ 09 января 2012

Если другой файл не находится в том же каталоге, вы должны добавить каталог в путь.
Попробуйте написать в Matlab:

pathtool

Кроме того, хотя это, вероятно, не ваш случай, если вы назовете файл с зарезервированным словом, например, "try", это может привести к хаосу.

Также попробуйте написать

который переключается

это может быть проницательно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...