· 2 min read

ペンデュラムは、あなたが差分をかち切る方法

ODEソルバーを理解するには数学の学位は必要ありません。 ペンデュラム、スクリーン、20分が必要です。 ここでは、Euler、RK4、およびアダプティブメソッドが実際のコードで実際に動作している方法です.

あなたが見ることができるものから始める

文字列から体重を掛ける。 片側に引きます。 お問い合わせ スイング.

別の式で管理されたシステムを作成しました

dθ/dt = ω dω/dt = -(g/L) · 罪(θ)

θは角度です。 ω は角速度です。 gは重力(9.81 m/s2)です。 Lは文字列の長さです。 これらの2行は、速度に等しい速度での角度変化、重力、長さ、電流角度に依存する速度の変化を言います.

問題:私達は正確にこのequationを解決できません。 sin(θ) は非線形にします。 いつでもθを与える式はありません。 そのため、近似しています。小さな増分に進むと、現在の状態から次の状態を計算します.

ODEソルバーが何をしているのか。 そしてそれを行うためのより良い、悪い方法があります.

ユーラー法: 悪質なものの欠陥

一番シンプルな考え方:現状を知れば、変化率が分かっているので、後から少しずつ状態を推定できます.

next_angle = current_angle + velocity × dt
next_velocity = current_velocity + acceleration × dt

これはユーラーの方法です。 フォグを歩くのが好きです。一歩先を踏み出せるので、そのステップを繰り返してもう一度見ましょう。 コード:

function euler(f, t, y, dt) {
  const dy = f(t, y);
  return [
    y[0] + dt * dy[0],
    y[1] + dt * dy[1]
  ];
}

問題:Eulerの方法は、最初に正確です。 つまり、ステップサイズを半分にすると、エラーが発生します。 貫流のために、このエラーは蓄積します。シミュレートされた貫流は、エネルギーをゆっくりと獲得し、より広くスイングします。 数分以内に、全輪で紡ぐ。 実際のペンドゥルムはこれを行うことはありません.

RK4: ワークホース

1901年、Carl RungeとMartin Kuttaがより良い方法を発表しました。 変更率を一歩ずつ見ているのではなく、4回見てみましょう

  1. ステップ→k1の開始時に斜面を測定する
  2. K1を使用してステップハーフウェイ、そこに斜面を測定 → k2
  3. K2を使用してステップハーフウェイ、再び測定 → k3
  4. K3を使用して終了までのステップは、1つのより多くの時間→ k4を測定します
  5. 結合して下さい:重くされた平均(k1 + 2k2 + 2k3 + k4)/6

これは4番目の注文精度です。 16の要因によってステップ サイズおよび間違いは低下します。 振り子は数千のスイングのためにエネルギーを正しく節約します.

function rk4(f, t, y, dt) {
  const k1 = f(t, y);
  const k2 = f(t + dt/2, [y[0] + dt/2 * k1[0], y[1] + dt/2 * k1[1]]);
  const k3 = f(t + dt/2, [y[0] + dt/2 * k2[0], y[1] + dt/2 * k2[1]]);
  const k4 = f(t + dt,   [y[0] + dt   * k3[0], y[1] + dt   * k3[1]]);
  return [
    y[0] + (dt/6) * (k1[0] + 2*k2[0] + 2*k3[0] + k4[0]),
    y[1] + (dt/6) * (k1[1] + 2*k2[1] + 2*k3[1] + k4[1])
  ];
}

これは、ペンデュラム、スプリングマス、およびヴァンダーポールシミュレーションのPinePaper使用方法です。 aerospace の軌跡計算で使用される同じ方法です。 コードの22行.

なぜこのマターは物理学の外で

ペンデュラムは教え例です。 しかし、同じ技術 — ステップフォワード、測定、正しい — 変更率がある場所に適用されます

  • 推進成長:dx/dt = r·x·(1 - x/K)。 容量を運ぶことを用いる記号論理学の成長。 同じ解決者.
  • 化学反応:電流濃度に比例した速度で濃度が変化します。 同じ解決者.
  • 中枢的なネットワーク: 勾配降下は、分岐させたODEです。 各トレーニングステップは、損失面に沿ってユーラーステップです.
  • 経済:ダイ/dt = r·y を介して継続的に利益化合物。 指数関数的な成長は最も単純な ODE です.
  • アニメーションのタイミング: リース曲線は、スプリング・ダッパー・オデズのソリューションです。 CSSの「弾性」と「バウンス」は、物理シミュレーションです.

数学は変化しません。 ドメインは行いません。 それは言語を作るものです。同じ文法では、羊のカウント、振り子、ニューラルネットワークのトレーニングについて説明します.

お問い合わせ

PinePaperを開き、ダイナミックシステムジェネレータを選択します。 「ペンデュラム」を選択します。 ボブスイング。 パラメータを変更します

  • 重力→より速い振動を増加して下さい(より短い期間)
  • ロッドの長さを増加→遅いスイング(長い期間)
  • より大きな角度からスタート→期間が増加する方法を見る(テキストブックの小角近似が見逃す非線形効果)

どんな変化も計測です。 パラメータを変更し、結果を観察します。 RK4のソルバーは毎秒30フレームを補充し、ペンデュラムは、式予測をあなたに示しました.

それだけです。 数学は測定です。 PinePaper が見える.

お問い合わせ

参考文献

  • ブッチャー、J.C.(2016)。 ※通常差分数*(第3回)の数値的方法 ウィリー.
  • ドミトリー、J.R.&プリンス、P.J.(1980) 埋め込まれたRunge-Kutta式の家族。 計算と応用数学のジャーナル, 6(1), 19-26.
  • ユーラー, L. (1768). Institutionum calculi Integraalis、Vol. 1. インペニシスアカデミー賞.
  • ヘアー、E.、Nørsett、S.P.、及びWanner、G. (1993)。 ※通常差分数の解決 I: 不断の問題* (2nd ed。) スチューナー.
  • クッタ, W. (1901). Beitrag zur näherungsweisenの統合の合計の差分光器hungen。 Zeitschriftのfür Mathematikのund Physik、46、435-453.
  • ニュートン、I. (1687)。 PhilosophiæNaturariis Principia Mathematica。 ロンドン:ジョセフ・ストラター.
  • ランゲ、C. (1895)。 Über は numerische Auflösung von の diffialgleichungen を死にます。 マテマチアンナレン、46(2)、167-178.
  • ストロガッツ、S.H. (2015). ※非線形ダイナミクスとChaos*(2nd ed.)。 ウェストビュープレス.

PinePaperのODEのソルバーは200ラインのEuler、RK4および適応性のDorman-Prince RK45を覆います。 pinepaper.studio/editorでペンドラムシミュレーションを無料でお試しください。

Ready to create?

Start making animated GIFs, videos, and graphics — free, no signup.

Open PinePaper Editor