ペンデュラムは、あなたが差分をかち切る方法
ODEソルバーを理解するには数学の学位は必要ありません. ペンデュラム、スクリーン、20分が必要です. ここでは、Euler、RK4、および適応方法が実際に動作する方法は次のとおりです 実際のコードを使って.
On this page
あなたが見ることができるものから始める
文字列から体重を掛ける. 片側に引きます. お問い合わせ. スイング.
別の式で管理されたシステムを作成しました
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回見てみましょう
- ステップ→k1の開始時に斜面を測定する
- K1を使用してステップハーフウェイ、そこに斜面を測定 → k2
- K2を使用してステップハーフウェイ、再び測定 → k3
- K3を使用して終了までのステップは、1つのより多くの時間→ k4を測定します
- 結合して下さい:重くされた平均(k1 + 2k2 + 2k3 + k4)/6
これは4番目の注文精度です. 16の要因によってステップ サイズおよび間違いは低下します. 振り子は数千のスイングのためにエネルギーを正しく節約します.
その主張は信じるよりもむしろチェックする価値があります. 以下、両方の方法
y′ = yを0から1に統合 — 正確な回答がeである場合 — 4ステップで
サイズ. ステップの調整は、約2とRK4のエラーを16で分割します,
第1位と第4次平均とは.
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. プリンス、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