[英]MATLAB: Applying multiple values to each (x,y) coordinate point in a 2D Cartesian coordinate system
[英]Simulate a 2D point mass moving along y=x^2 in MATLAB
我有一組混合的微分方程和代數方程,已經在MATLAB中找到了解析解。 它涉及沿受y=x^2
約束的2D曲線移動的點質量。
我將如何在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
因此,如果您使用lagrancian解決問題,則會得到以下公式(請參閱https://physics.stackexchange.com/questions/47154/ball-rolling-in-a-parabolic-bowl )。 k值來自y = kx ^ 2(在您的示例中可以為1)。
因此,以以下形式重寫它。
現在,您只需使用
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。 我希望這對干杯有幫助:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.