らんだむな記憶

blogというものを体験してみようか!的なー

微分方程式の数値解析

なんとなく微分方程式の数値解析に興味がまったくないわけではないが、数値解析の本を読んでみると、それは分からんでもないが説明だけがずらずら書いてあって肝心の計算機による計算についての記載が少ない、或は概念の説明だけ。(最近の本は知らんけど、一昔前の数学シリーズにおける数値計算の本はそんなイメージ)
一方コードが書いてある本は非常に汚いC言語で書かれたコードがずらずら並んでてページ数だけ食っていく。正直、コンパイルできなくてもいいから、本質だけをまとめた関数なりメソッドなりのみを印刷して、全体はCD-ROMなりWebからのダウンロードにでもすればいいのにと思ったり思わなかったり。というか、そもそもC言語だと冗長になるから、LLでざっと全体像を実装してくれたほうが見やすい。
ということでもそもそ探すと、オンライン講座であった。とは言え英語だが。
Differential Equations in Action Class Online - Udacity

完全に無償だし、締め切りらしい締め切りもないので激しく気楽。

Lesson1では三角法のおさらいと微分法。Newtonの法則などが軽くおさらい。適宜pythonのコーディングを伴うQUIZ。pythonの基礎はまともに解説されないので、事前に多少できとく必要があるようだ。QUIZは4択のことが多いが、たまに数値入力の場合も。QUIZは正解しないと次に進まないから、詰まったらアウトかな...。
途中からForward Euler Method(オイラー法)による微分方程式の数値解析。

\begin{align}
v(t) &:= \dot{x}(t), \\
a(t) &:= \dot{v}(t) = \ddot{x}(t)
\end{align}
として、
\begin{align}
v(t) &\approx \frac{x(t + \Delta t) - x(t)}{\Delta t}, \\
a(t) &\approx \frac{v(t + \Delta t) - v(t)}{\Delta t}
\end{align}
を移項して、
\begin{align}
x(t + \Delta t) &\approx x(t) + v(t) \Delta t, \\
v(t + \Delta t) &\approx v(t) + a(t) \Delta t
\end{align}
で求めていくという素朴なもの。
万有引力の法則をベースにForward Euler Methodで地球の周りの宇宙船の楕円軌道を描いてみる。

f:id:derwind:20151017175608p:plain:w321

この絵でも分かるが、最後に起動はぴったりは閉じない。ずれる。離散的な計算で近似しているにしか過ぎないから。
このずれについてはLesson2の範囲だが、GTE(Global Truncation Error)という名前で呼ばれているらしい。
なんか車っぽい響きだな、となんとなく思ってしまった。