【发布时间】:2017-03-08 18:40:58
【问题描述】:
我有一组混合的微分方程和代数方程,我在 MATLAB 中找到了解析解。它涉及沿由y=x^2 约束的二维曲线移动的点质量。
我将如何在 MATLAB 中使用 ode-solver(或其他更容易的方法)来模拟球在曲线上滚动?我可以自己做的动画,我更关心找到每个连续步骤的速度xd yd。这就是我迷路的地方。
这些是我使用拉格朗日乘子推导出的运动方程。因此lambda。 lambda 是反作用力。我可以计算加速度,xdd ydd,但如果我想正确模拟这个,我还需要状态下的速度,我假设。
% Symbolic functions
syms y x xd yd xdd ydd
syms m g lambda
% Parameters
A = [m 0 -2*x; 0 m 1; -2*x 1 0];
X = [xdd ydd lambda].';
b = [0 -m*g -2*xd^2].';
sol = A\b % these are the states stored in X
【问题讨论】:
-
如果你知道它的加速度,你可以计算它的速度和位置。 x=dx+dx*dt,dx=dx+ddx*dt。 (d -> 导数,dd 二阶导数)。不仅仅是随着时间的推移循环......
-
你只需要写出质量沿曲线的运动方程:Serret-Frenet 公式:en.wikipedia.org/wiki/Frenet%E2%80%93Serret_formulas。一旦你有了它们,Runge-Kutta 数值积分应该就足够了。