DSolveで解く微分方程式:はじめに

Mathematica 関数のDSolveは,微分方程式の記号解を求める.(一方,Mathematica 関数のNDSolveは,汎用の数値微分方程式ソルバである.)DSolveは以下のような種類の方程式を扱うことができる.

  • 常微分方程式(ODE).独立変数 を1つ,従属変数 1つ以上持つ.DSolveは常微分方程式系だけでなく,単独の常微分方程式を解くための多岐に渡る手法を備えている.
  • 偏微分方程式(PDE).独立変数を2つ以上,従属変数を1つ持つ.偏微分方程式の厳密な記号解を求めることは難しいが,DSolveは標準的な参考文献に見られるほとんどの一階偏微分方程式,およびいくつかの二階偏微分方程式を解くことができる.
    • 微分代数方程式(DAE).系のメンバのうち,微分方程式もあれば,導関数を持たない純粋な代数方程式もある.偏微分方程式の場合と同様に,微分代数方程式の厳密解を求めることは難しいが,DSolveは応用で生じるそのような系の多数の例題を解くことができる.
    DSolve[eqn,y[x],x]について微分方程式を解く
    DSolve[{eqn1,eqn2,...},{y1[x],y2[x],...},x]
    について微分方程式系を解く

    常微分方程式の記号解を求める

    DSolveは結果を規則のリストとして返す.このため,1つの方程式に複数の解を返すことが可能となる.方程式系では複数の解集合がグループ化されることがある.この規則を使って,解を他の計算に代入することができる.

    以下は,指定された常微分方程式の一般解を求める.方程式を満足する関数の規則が返される.
    In[1]:=
    Click for copyable input
    Out[1]=
    (ReplaceAll)を使うと,特定の解を選ぶことができる.
    In[2]:=
    Click for copyable input
    Out[2]=

    一般解には,方程式の特殊解を生成するために変化させることのできる任意のパラメータC[i]が含まれる.十分な数の初期条件が指定されると,DSolveは指定された方程式の特殊解を返す.

    ここでは初期条件が指定されているので,DSolveは問題の特殊解を返す.
    In[3]:=
    Click for copyable input
    Out[3]=
    以下で解をプロットする.PlotコマンドでReplaceAll ()を使うと,に解が代入される.
    In[4]:=
    Click for copyable input
    Out[4]=
    DSolve[eqn,y,x]微分方程式を について純関数として解く
    DSolve[{eqn1,eqn2,...},{y1,y2,...},x]
    微分方程式系を純関数 について解く

    常微分方程式の記号解を純関数として求める

    DSolveの第2引数が,ではなく として指定されている場合,解は純関数として返される.この形式は常微分方程式の解を検証したり,後の計算で解を使ったりするのに便利である.詳細は「問題の設定」で説明する.

    以下の微分方程式の解は,純関数として求められる.
    In[5]:=
    Click for copyable input
    Out[5]=
    解を検証する.
    In[6]:=
    Click for copyable input
    Out[6]=
    常微分方程式系を解く.各解には,関数の名前(ここでは)に応じてラベル付けされており,各々の関数が選びやすくなっている.
    In[7]:=
    Click for copyable input
    Out[7]=
    これは,独立変数にランダム値を代入して,その点で解が正しいことを示す.
    In[8]:=
    Click for copyable input
    Out[8]=
    解をプロットする.
    In[9]:=
    Click for copyable input
    Out[9]=
    DSolve[eqn,u[x,y],{x,y}]について偏微分方程式を解く

    偏微分方程式の記号解を求める

    常微分方程式の一般解には任意定数が含まれるが,偏微分方程式の一般解には任意関数が含まれる.DSolveではこのような任意関数にC[i]というラベルが付く.

    以下は一階線形偏微分方程式の一般解である.解では,任意関数 C[1]というラベルが付いている.
    In[10]:=
    Click for copyable input
    Out[10]=
    特定のC[1]について,偏微分方程式の特殊解を求める.
    In[11]:=
    Click for copyable input
    Out[11]=
    この解の表面のプロットである.
    In[12]:=
    Click for copyable input
    Out[12]=

    DSolveは微分代数方程式を解くこともできる.シンタックスは,常微分方程式系のものと同じである.

    微分代数方程式を解く.
    In[13]:=
    Click for copyable input
    Out[13]=
    解を検証する.
    In[14]:=
    Click for copyable input
    Out[14]=
    解のプロットは,解の和が代数関係 f[x]+g[x]=3 Sin[x]を満足することを示している.
    In[15]:=
    Click for copyable input
    Out[15]=

「DSolveで解く微分方程式」チュートリアルの目的

DSolveはモジュール設計である.これは,異なるクラスの問題に対するアルゴリズムが互いに独立に動作するというものである.一旦問題が分類されると(「微分方程式の分類」を参照),そのクラスで使用できるメソッドが決まった順で,解が得られるまで試される.コードは階層構造であり,複雑な問題の解法は,より多数のメソッドが使用できる比較的簡単な問題の解法に簡約される.例えば,高階常微分方程式は,通常その階数を一階か二階に減少させることで解かれる.

記述されるプロセスは内部的に行われ,ユーザの介入は必要としない.このため,このドキュメントの基本的な目的は,以下のようなものである.

  • ユーザが最も適した形式でDSolveで問題を解き,その解を研究に適用することができるように,十分な情報やヒントを提供すること.これは,十分な例題を提示することで達成できる.この情報は「DSolveの使用」に要約してある.
    • DSolveで扱える問題の種類のリスト,およびそれぞれの場合の解法の特徴を提供する. これは常微分方程式,偏微分方程式,微分代数方程式,境界値問題についてのチュートリアルに記述してある.

    DSolveで解く微分方程式」チュートリアルが,DSolveについての基礎的な知識の習得に役に立ち,より高度なトピックについての情報の参考となれば幸いである.

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