Как работает odefun (Matlab) - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь понять, как решать дифференциальные уравнения в matlab

[t, y] = ode45 (odefun, tspan, y0).

И у меня есть пример odefun , но я не уверен, какая часть этого кода делает, или я просто не понимаю синтаксис. eq (1,1) =, eq (2,1) =, eq (3,1) = - являются векторами? Время первого аргумента? а второй аргумент за что отвечает? Любая помощь приветствуется!

function eq = f (t, y)


t0=0.2;
x=y(1)+t0*y(2);

P = 11 - (t + y(3));
if (11 - (t + y(3))<=0) 
  P = -1;
end

eq(1,1)=y(2);
eq(2,1)=-P*sign(x);
eq(3,1)=0;
end

1 Ответ

0 голосов
/ 08 мая 2020
Ожидается, что

eq будет вектором-столбцом в формате 3x1. Речь идет о его компонентах. Вы также могли бы написать

eq =  [ y(2); -P*sign(x); 0 ]

, что означает, что компонент y(3) является константой, а y(2) является производной от y(1).

Обычно это установка для краевой задачи с одним переменным параметром.

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