
deSolveは微分方程式を数値積分するRのパッケージで2010年に公開されたもの。もともとRにはodesolveという常微分方程式を数値積分するパッケージ(2001)があったのですが、それを徹底的に強化し、常微分方程式、拘束条件のある常微分方程式から、遅延のある常微分方程式、偏微分方程式を数値積分する環境としたものです。
このdeSolveのチュートリアルとして書かれたのが、K.Soetaert,J.Cash and F. MazziaによるSolving Differential Equations in Rというテキスト。K.SoetaertはdeSolveを開発者の一人です。

例えば、左に示した二つの図は、第8章の偏微分方程式の差分解法のあとの第9章で扱っている熱伝導方程式、波動方程式、ラプラス方程式、1次元および2次元のブッルッセレータ方程式、サインゴルドン方程式、非線形シュレーディンガー方程式のうちの2次元ブルッセレーター方程式(上の図)と非線形シュレーディンガー方程式(下の図)を数値積分した結果を示したものです。
ソースコードは初期条件や格子の差分化の指定などを含めても10数行の短いもの。それでこうした結果を得られるのは素晴らしいの一言。時間が出来たら2次元ナウ゛ィエストークス方程式を数値積分して対流から乱流になる様子をローレンツ方程式と比較してみたいと思います。示したいのは波長の短い撹乱が長波長側には影響せず、バタフライ効果がないこと。つまり、ブラジルで蝶が羽ばたいてニューヨークでハリケーンが起きるなんてバカなことはないことを数値計算で検証したいだけなのですが、deSolveを使えば楽に出来そうで楽しみです。
下は2次元サインゴルドン方程式の解のスナップショット。