最初の例と同様に、ここでは 2-D デカルト座標の単位長さを持つ紐の質量の動力学をモデリングする問題 (振子の問題) を取り上げます。紐の質量位置を
とし、速度を
とします。
>
|
|
>
|
|
>
|
|
| (4.1) |
>
|
|
| (4.2) |
この質量は固定長
を持つ紐のため、制約は次のようになります。
>
|
|
| (4.3) |
ここで Euler-Lagrange 公式を使用して DAE 系の解を求めます。したがって、運動エネルギー
とポテンシャルエネルギー
を次のように計算します。
>
|
|
| (4.4) |
>
|
|
| (4.5) |
ここで
は質量、
は動定数 (9.8 とします) です。Lagrangian 法と改定 Lagrangian 法で次のように指定します。
>
|
|
| (4.6) |
>
|
|
| (4.7) |
これで、Euler-Lagrange 公式が次のように構成できます。
>
|
|
| (4.8) |
>
|
|
| (4.9) |
>
|
|
| (4.10) |
>
|
|
| (4.11) |
これで振子の運動の方程式ができました。次に、整合する初期条件を決定する必要があります。このため、系の隠れた制約を見つけ出さなければなりません。制約は 1 つしかないため簡単に見つけることができます。
>
|
|
| (4.12) |
>
|
|
| (4.13) |
初期条件は、初期地点において
、
、および
を満たす必要があります。条件の自由度は 2 度だけです。したがって、最小値
で始動し、初期水平速度が
の振子では、次のようになります。
>
|
|

| (4.14) |
>
|
|
| (4.15) |
これで上記のように、単位長さが
で単位質量が
、で単位質量が
の振子では、DAE 系と初期条件は次のようになると考えられます。
>
|
|
| (4.16) |
>
|
|
| (4.17) |
これで次のような解が得られます。
>
|
|
| (4.18) |
>
|
|
![[t = .500000000000000, lambda(t) = 4.89750023744205887, x(t) = 0.319392547405407887e-1, diff(x(t), t) = 0.564531449666508191e-3, y(t) = -.999489811893806701, diff(y(t), t) = 0.180382736946334369e-4]](/support/helpjp/helpview.aspx?si=2478/file01478/math635.png)
| (4.19) |
>
|
|
![[t = 1., lambda(t) = 4.90499904949563259, x(t) = 0.360893004470803490e-3, diff(x(t), t) = -0.999936779200488873e-1, y(t) = -.99999993487231431, diff(y(t), t) = -0.360870084253994927e-4]](/support/helpjp/helpview.aspx?si=2478/file01478/math642.png)
| (4.20) |
rosenbrock_dae による解は次のようになります。
>
|
|
| (4.21) |
>
|
|
![[t = .500000000000000, lambda(t) = 4.89750019118586088, x(t) = 0.319392364763693773e-1, diff(x(t), t) = 0.564626004686089771e-3, y(t) = -.999489813543333439, diff(y(t), t) = 0.180482728717063205e-4]](/support/helpjp/helpview.aspx?si=2478/file01478/math659.png)
| (4.22) |
>
|
|
![[t = 1., lambda(t) = 4.90499906207810721, x(t) = 0.360968463263104937e-3, diff(x(t), t) = -0.999936779452163804e-1, y(t) = -.99999993669131815, diff(y(t), t) = -0.360897908606885759e-4]](/support/helpjp/helpview.aspx?si=2478/file01478/math666.png)
| (4.23) |
mebdfi による解は次のようになります。
>
|
|
| (4.24) |
>
|
|
![[t = .500000000000000, lambda(t) = 4.89750245194350509, x(t) = 0.319388403694855147e-1, diff(x(t), t) = 0.564871203422257005e-3, y(t) = -.999489825189509129, diff(y(t), t) = 0.180670454630691393e-4]](/support/helpjp/helpview.aspx?si=2478/file01478/math683.png)
| (4.25) |
>
|
|
![[t = 1., lambda(t) = 4.90497944724429935, x(t) = 0.361097312194549836e-3, diff(x(t), t) = -0.999925039194764775e-1, y(t) = -.99999993426187950, diff(y(t), t) = -0.359881610159317974e-4]](/support/helpjp/helpview.aspx?si=2478/file01478/math690.png)
| (4.26) |
ここで、上記と同様の問題について考えますが、今度は、最初の紐の先に別の紐をつなげて第 2 の質量を追加します。追加する紐の長さは最初の紐の半分です (二重振子)。この系は次のように取得および求解できます。
>
|

|

| (4.27) |
>
|
|

| (4.28) |
>
|
|
| (4.29) |
第 2 の質量の曲線軌道は、次のようにしてプロットできます。
>
|
|
Warning, cannot evaluate the solution further right of 4.9606298, maxfun limit exceeded (see ?dsolve,maxfun for details)
| |
展開法を使用したため、
と
に初期条件を指定していませんが、系はラムダに対して正しく線形となりました。