【发布时间】:2019-03-03 00:21:35
【问题描述】:
我的 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 的时间值。我想过在matlab中使用interp1函数通过执行:t_f = interp1([0,5],YSol,0);但它不起作用。错误为:Values V must be of type double or single。
在matlab中symfun函数类型上使用interp1的正确方法是什么?
附:自变量“t”尚未被定义为任何先前文章的向量(我理解 matlab 喜欢向量)。
【问题讨论】:
-
我不得不谷歌 persay,原来你的意思是说本身。 :)
-
我猜“本身”是正确的用法(:
标签: matlab interpolation ode differential-equations dsolve