· 3 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の要因によってステップ サイズおよび間違いは低下します. 振り子は数千のスイングのためにエネルギーを正しく節約します.

その主張は信じるよりもむしろチェックする価値があります. 以下、両方の方法 y′ = yを0から1に統合 — 正確な回答がeである場合 — 4ステップで サイズ. ステップの調整は、約2とRK4のエラーを16で分割します, 第1位と第4次平均とは.

Interactive demo — open in editor pp:PinePaper

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 が見える.

Interactive demo — open in editor pp:PinePaper

参考文献

  • ブッチャー、J.C. (2016年). ※通常差分数*(第3回)の数値的方法. ウィリー.
  • ドミトリー, J.R. プリンス、PJ. (1980年). 埋め込まれたRunge-Kutta式の家族. 計算と応用数学のジャーナル, 6(1), 19-26.
  • ユーラー、L. (1768). インフィサー、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