У меня есть решения для системы дифференциальных уравнений в моем сценарии matlab.Я определяю свои функции следующим образом:
syms V_x(t) V_y(t) X(t) Y(t);
ode_V_x = diff(V_x,t) == -(B/m)*V_x;
ode_V_y = diff(V_y,t) == -g - (B/m)*V_y;
ode_X = diff(X,t) == V_x;
ode_Y = diff(Y,t) == V_y;
Затем я решаю их с надлежащими начальными условиями следующим образом:
[V_xSol(t), V_ySol(t), XSol(t), YSol(t)] = dsolve(odes,conds);
Например, решение для Y (t) получается следующим образом:
YSol(t) = exp(-t/5)*((981*exp(t/5))/4 - 12891678040772023/35184372088832) - (981*t)/20 + 4262710785985975/35184372088832
Теперь мне нужно найти значение времени, за которое Y(t) = 0
.Я думал об использовании функции interp1
в Matlab, выполнив: t_f = interp1([0,5],YSol,0);
, но она не работает.Ошибка гласит: Values V must be of type double or single
.Как правильно использовать interp1 для функции типа symfun
в matlab?PS независимая переменная 't' не была определена как вектор чего-либо ранее (я понимаю, что Matlab любит векторы).