在MATLAB中定义和求解嵌套的非线性ODE

时间:2016-12-15 20:00:12

标签: matlab differential-equations

我给出了带有y'' = -g + a(t)/m的微分方程a(t) = k*y'^2,其中yt(时间)的函数。我的初始条件是y(0) = 600;y'(0) = 0;

在MATLAB中,我知道如何用

定义y''
ydd = diff(y,t,2) == -g + a(t)/m;

但我很遗憾这是一个'嵌套'非线性微分方程,我不太清楚如何定义它,更不用说在MATLAB中解决它了。

2 个答案:

答案 0 :(得分:1)

这是两个耦合的一阶ODE。

z = y'。然后你有:

z' = -g + a(t)/m
y' = sqrt(a(t)/k)

您需要初始条件y(0)=600z(0)=0

等式z(0)=0意味着a(0)/m = g。解决a(0) = gm

这些是你需要解决的方程式。

答案 1 :(得分:1)

更好的一阶系统是

v' = -g + k/m*v^2
y' = v

因为不再涉及第三个未知函数a(t)

挑战:通过分离变量和部分分数分解手动解决第一个方程,或者将区域切线双曲线的缩放识别为v边的积分。