Я не понимаю, какую ошибку я получаю, используя функцию Matlab dsolve - PullRequest
1 голос
/ 16 апреля 2020

Я довольно новичок в Matlab и программировании в целом, и это сообщение об ошибке победило меня ?. Упрощенный код выглядит следующим образом:

Lpi = .05;
Dpi = .01;
LpD = [.1, 06];
LpI = [.9, 14];
DpR = [.4, 06];
DpI = [.6, 08];
IpH = [01, 30];

syms H(t) L(t) D(t) R(t) I(t)

HtL =@(t) H(t) * (Lpi*L(t) + Dpi*D(t));
LtD =@(t) LpD(1)*HtL(t-LpD(2));
LtI =@(t) LpI(1)*HtL(t-LpI(2));
DtR =@(t) DpR(1)*LtD(t-DpR(2));
DtI =@(t) DpI(1)*LtD(t-DpI(2));
ItH =@(t) IpH(1)*(LtI(t-IpH(2))+DtI(t-IpH(2)));

odea = diff(H, t) == ItH(t) - HtL(t);
odeb = diff(L, t) == HtL(t) - LtD(t) - LtI(t);
odec = diff(D, t) == LtD(t) - DtR(t) - DtI(t);
oded = diff(R, t) == DtR(t);
odee = diff(I, t) == LtI(t) + DtI(t) - ItH(t);

odes = [odea;odeb;odec;oded;odee];

S = dsolve(odes);

Если есть какие-либо сомнения относительно цели или операции, я могу попытаться объяснить их ниже.

После объявления дифференциальных уравнений это мое понимание того, что они действительно являются дифференциальными уравнениями, поскольку рабочая область Matlab показывает, что они имеют форму:

val(t) =

diff(H(t), t) == (24*H(t - 44)*(D(t - 44)/100 + L(t - 44)/20))/25 - H(t)*(D(t)/100 + L(t)/20)

(это случай odea, я не включаю остальные поскольку они похожи, но длиннее)

Проблема появляется, когда я вызываю dsolve, так как она отображает следующую ошибку:

Error using mupadengine/feval_internal (line 172)
Expecting an ODE in the specified variable.

Error in dsolve>mupadDsolve (line 328)
T = feval_internal(symengine,'symobj::dsolve',sys,x,options);

Error in dsolve (line 183)
sol = mupadDsolve(args, options);

Error in main (line 50)
S = dsolve(odes);

Я очень смущена этой ошибкой, так как она есть, насколько я понимаю, использование в учебнике функции dsolve (согласно странице MathWorks «Решить систему дифференциальных уравнений»).

Заранее благодарю за любую помощь.

...