2012-09-06 114 views
0

我在拉格朗日力學中遇到了下面的微分方程組。你能提出一個數值方法,並提供相關的鏈接和參考資料,說明如何解決這個問題。另外,在Matlab或Mathematica上有更短的實現嗎?數值求解兩個耦合的非線性二階差分方程

MX(Y點)^ 2 + mgcosy - 鎂 - (M = M)(X雙點)= 0

gsiny + 2(X點)(Y點+ X(Y雙點)= 0

其中(x點)或(Y點)= DX/DT或DY/DT,並且雙點表示的雙衍生物WRT時間。

+0

你想寫mxy'^ 2 + mg cos(y) - Mg - **(mm)** x'' = 0在第一個方程? –

回答

1

可以創建矢量Y =(xyuv)」這樣

dx/dt = u 
dy/dt = v 
du/dt = d²x/dt² 
dv/dt = d²y/dt² 

有可能從equati中分離出第二個衍生物插件,讓您得到

d²x/dt² = (m*g*cos(y) + m*x*v² - M*g)/(M-m) 
d²y/dt² = -(g*sin(y) - 2*u*v)/x 

現在,你可以嘗試使用標準ODE求解器,如Runge-Kutta方法來解決它。 Matlab有一套求解器,比如ode23。我沒有測試他跟隨,但它會是這樣的:

function f = F(Y) 
    x = Y(1); y = Y(2); u = Y(3); v = Y(4); 
    f = [0,0,0,0]; 
    f(1) = u; 
    f(2) = v; 
    f(3) = (m*g*cos(y) + m*x*v*v - M*g)/(M-m); 
    f(4) = -(g*sin(y) - 2*u*v)/x; 

[T,Y] = ode23(F, time_period, Y0);