MATHEMATICAチュートリアル

NDSolveの"LocallyExact"メソッド

はじめに

微分方程式系は,解析法で解ける場合がある.このような既知のアルゴリズム技法の多くを,関数DSolveが実装する.

しかし,閉形式で解くことのできる微分方程式系は小さい部分集合しか構成しない.この事実に関わらず,ベクトル場全体で閉形式の解が存在しない場合,微分方程式系をベクトル場の部分について解析的に解くことができる場合がよくある.この例としてメソッドがある.これはべクトル場 を, となるような という部分体に分割するものである.

メソッドとは基本的に,DSolveが解を見付けることができる場合,局所的に解を求めるために,標準的な数値積分スキームではなく数値評価を直接使うことができるというものである.

メソッドは刻み幅を適宜調整しようとはしないので,主として積分ステップ間のサブメソッドとして使われる.

例題

定義済みの問題を含むパッケージをロードする.
In[1]:=
Click for copyable input

調和振動

メソッドを使って,調和振動の運動方程式を数値的に解いてみる.結果は,解および一階導関数を近似する2つの補間関数になる.
In[2]:=
Click for copyable input
Out[5]=
解は単位円を描く.
In[6]:=
Click for copyable input
Out[6]=

大域と局所

メソッドは,閉形式の(大域的な)解に代るものではない.

メソッドは解を求めるために解析法を使うが,数値積分の格子点で(もしくは,正確には格子点の内側で)しか解を生成しない.従って,数値積分点上に正確には存在しない補間点での標本抽出のために,エラーが存在する可能性がある.

調和振動の最初の解の要素の誤差をプロットして,実際の解と比較する.
In[7]:=
Click for copyable input
Out[7]=

簡略化

メソッドには,DSolveの結果を簡略化するために使うことのできるオプションがある.

以下はパラメータに標準値を使ったローレンツ(Lorenz)方程式の分割で発生する微分方程式系の要素を線形化したものである.
In[8]:=
Click for copyable input
この部分系はDSolveで正確に解くことができる.
In[11]:=
Click for copyable input
Out[11]=
DSolveの結果は簡略化できることが多い.以下は式を簡略化する関数を定義し,入力と結果を出力する.
In[12]:=
Click for copyable input
この関数はオプションとしてメソッドに渡すことができる.
In[13]:=
Click for copyable input
Out[13]=

簡略化は,数値積分法のためのデータオブジェクトを構築する初期化段階で1度しか実行されない.

オプションの要約

オプション名
デフォルト値
"SimplificationFunction"NoneDSolveの結果を簡略化するときに使う関数

メソッドのオプション

New to Mathematica? Find your learning path »
Have a question? Ask support »