2017-03-07 1 views
0

MATLAB에서 분석 솔루션을 찾은 차등 및 대수 방정식이 혼합되어 있습니다. y=x^2으로 제한된 2D 커브를 따라 움직이는 점 질량에 관련됩니다.MATLAB에서 y = x^2를 따라 움직이는 2D 점 질량을 시뮬레이트합니다.

커브 위로 구르는 공을 시뮬레이트하기 위해 MATLAB에서 ode-solver (또는 다른 것이 더 쉬운 경우)를 사용하려면 어떻게해야합니까? 제가 직접 할 수있는 애니메이션, 나는 연속적인 단계마다 속도 (xd yd)를 찾는 것에 더 관심이 있습니다. 그것이 내가 잃어버린 곳입니다.

이들은 Lagrange 승수를 사용하여 유도 한 운동 방정식입니다. 따라서 lambda. lambda은 반력입니다. xdd ydd 가속도를 계산할 수 있습니다. 그러나이 시뮬레이션을 올바르게 시뮬레이션하려면 상태의 속도가 필요합니다. 당신은 당신이 아래에 볼 수있는 다음과 같은 공식을 얻을 것 lagrancian를 사용하여 문제를 해결하는 경우

% 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 
+0

가속도를 알고 있으면 속도와 위치를 계산할 수 있습니다. x = dx + dx * dt, dx = dx + ddx * dt. (d -> 유도체, dd 2 차 유도체). 시간이 지남에 따라 루프가 반복됩니다 ... –

+0

커브를 따라 질량에 대한 운동 방정식을 쓰면됩니다. Serret-Frenet 수식 : https://en.wikipedia.org/wiki/Frenet%E2%80%93Serret_formulas. 일단 당신이 그들을 가지면 Runge-Kutta 수치 적분이 충분해야합니다. – duffymo

답변

2

그래서 (https://physics.stackexchange.com/questions/47154/ball-rolling-in-a-parabolic-bowl 참조). k- 값은 y = kx^2에서옵니다 (귀하의 경우 1 일 수 있습니다).

이렇게 다음 형식으로 다시 작성하십시오.

enter image description here

지금 당신은 당신은 충분한 작은 DT와 루프를 만들

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

사용하고, X-위치의 속도와 가속도를 업데이트합니다. 이제 다음 시작 값을 지정하려면 이 필요합니다. -> x0 dx0 ddx0 및 dt. 이 도움이 되었기를 바랍니다. 건배 :

관련 문제