0

ラグランジュ力学で次の微分方程式系に遭遇しました。どのように解決できるかについての関連するリンクと参照を使用して、数値的な方法を提案できますか。また、Matlab または Mathematica でのより短い実装はありますか?

mx (y ドット)^2 + mgcosy - Mg - (M=m)(x ダブル ドット) =0

gsiny + 2(x ドット)(y ドット + x (y ダブルドット)=0

ここで、(x ドット) または (y ドット)= dx/dt または dy/dt であり、2 つのドットは時間に関する 2 つの導関数を示します。

4

1 に答える 1

1

ベクトル Y = (xyuv)' を作成して、

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

方程式から 2 次導関数を分離することができるので、次のようになります。

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 ソルバーを使用して解いてみることができます。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);
于 2012-09-13T19:48:01.960 に答える