在MATLAB中模拟沿y = x ^ 2移动的2D点质量

时间:2017-03-07 12:06:08

标签: matlab math

我有一组混合的微分和代数方程,我在MATLAB中找到了解析解。它涉及沿着受y=x^2约束的2D曲线移动的点质量。

我如何在MATLAB中使用ode-solver(或者更简单的方法)来模拟球在曲线上滚动?我自己可以做的动画,我更关心为每个连续步骤找到速度xd yd。那就是我迷失的地方。

这些是我使用拉格朗日乘数得出的运动方程。因此lambdalambda是反作用力。我可以计算加速度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

1 个答案:

答案 0 :(得分:2)

因此,如果您使用lagrancian解决问题,您将获得以下公式(请参阅https://physics.stackexchange.com/questions/47154/ball-rolling-in-a-parabolic-bowl)。 k值来自y = kx ^ 2(例如,可以为1)。

所以用以下形式重写它。

enter image description here

现在你只需使用

 ddx=   Formula seen above..
 x  =  x + dx  *dt
 dx = dx + ddx *dt
 t  = t  + dt 
 y  = k*x*x

使用足够小的dt进行循环,并更新x位置速度和加速度。 现在你需要 指定以下起始值 - > x0 dx0 ddx0和dt。 我希望这有帮助 干杯:)