簡體   English   中英

在MATLAB中模擬沿y = x ^ 2移動的2D點質量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM