在 MATLAB 中定义和求解嵌套非线性 ODE
Define and solve nested non-linear ODE in MATLAB
我得到了 y'' = -g + a(t)/m
和 a(t) = k*y'^2
的微分方程,其中 y
是 t
(时间)的函数。我的初始条件是 y(0) = 600;
和 y'(0) = 0;
在 MATLAB 中我知道如何定义 y''
和
ydd = diff(y,t,2) == -g + a(t)/m;
但我不知道这是一个 'nested' 非线性微分方程,我不太确定如何定义它,更不用说在 MATLAB 中求解它了。
这是两个耦合的一阶 ODE。
让z = y'
。那么你有:
z' = -g + a(t)/m
y' = sqrt(a(t)/k)
您需要初始条件 y(0)=600
和 z(0)=0
。
等式 z(0)=0
意味着 a(0)/m = g
。求解 a(0) = gm
.
这些是您需要求解的方程式。
更好的一阶系统是
v' = -g + k/m*v^2
y' = v
因为不再涉及第三个未知函数 a(t)
。
挑战:通过变量分离和部分分数分解手动求解第一个方程,或将面积正切双曲线的缩放确定为 v
侧边的积分。
我得到了 y'' = -g + a(t)/m
和 a(t) = k*y'^2
的微分方程,其中 y
是 t
(时间)的函数。我的初始条件是 y(0) = 600;
和 y'(0) = 0;
在 MATLAB 中我知道如何定义 y''
和
ydd = diff(y,t,2) == -g + a(t)/m;
但我不知道这是一个 'nested' 非线性微分方程,我不太确定如何定义它,更不用说在 MATLAB 中求解它了。
这是两个耦合的一阶 ODE。
让z = y'
。那么你有:
z' = -g + a(t)/m
y' = sqrt(a(t)/k)
您需要初始条件 y(0)=600
和 z(0)=0
。
等式 z(0)=0
意味着 a(0)/m = g
。求解 a(0) = gm
.
这些是您需要求解的方程式。
更好的一阶系统是
v' = -g + k/m*v^2
y' = v
因为不再涉及第三个未知函数 a(t)
。
挑战:通过变量分离和部分分数分解手动求解第一个方程,或将面积正切双曲线的缩放确定为 v
侧边的积分。