How to | 遅延微分方程式を解く方法
標準微分方程式を解くための関数,NDSolveを使って一定の遅延を持つ遅延微分方程式を数値的に解くことができる.この関数は補間関数を返し,この補間関数は他の関数と一緒に使うことが容易にできる.
遅延1で最初の履歴関数が
である一次遅延微分方程式を取る.NDSolve を使ってこれを解き,解をsol1に保存する.NDSolveの第1引数は遅延微分方程式,第2引数は解きたい変数,第3引数は変数の範囲である:
sol1 = NDSolve[{x'[t] == x[t - 1](1 - x[t]), x[t /; t ≤ 0] == t ^ 2}, x, {t, -2, 2}]解x[t]とその最初の導関数x'[t]をプロットする.これらをそれぞれ違う色で見るためにEvaluateで周りを囲む.またプロットに凡例を加えたい場合は,プロットの凡例パッケージをロードする必要がある:
Needs["PlotLegends`"]Plot[Evaluate[{x[t], x'[t]} /. First[sol1]], {t, -1, 5}, PlotRange -> All, PlotLegends -> {Style[x[t], 14], Style[ x'[t], 14]}]Manipulateを使って初めの関数を変更することができる:
Manipulate[
Module[{sol = NDSolve[{x'[t] == x[t - 1](1 - x[t]), x[t /; t ≤ 0] == ϕ}, x, {t, -2, 2}]},
Plot[Evaluate[x[t] /. First[sol]], {t, -2, 2}]], {ϕ, {0.1, t ^ 2, Exp[t], Cos[t], Sin[t]}}]2つの一定の遅延である
および1を持ち,最初の履歴関数が
である一次遅延微分方程式を解く:
sol2 = NDSolve[{x'[t] == x[t] (x[t - π] - x'[t - 1]), x[t /; t ≤ 0] == Cos[t]}, x, {t, 0, 8}]解x[t]とその最初の導関数x'[t]をプロットする.これらを異なる色で表示したい場合はEvaluateで周りを囲む:
Plot[Evaluate[{x[t], x'[t]} /. First[sol2]], {t, 0, 8}, PlotRange -> All, PlotLegends -> {Style[x[t], 14], Style[ x'[t], 14]}]一定の遅延1と最初の履歴関数
を持つ二次遅延微分方程式を解く:
sol3 = NDSolve[{x''[t] + x[t - 1] == 0, x[t /; t ≤ 0] == t ^ 2}, x, {t, -1, 5}]解x[t]とその最初の2つの導関数であるx'[t]およびx''[t]をプロットする.これらを異なる色で表示したい場合はEvaluateで周りを囲む:
Plot[Evaluate[{x[t], x'[t], x''[t]} /. First[sol3]], {t, -1, 5}, PlotRange -> All, PlotLegends -> {Style[x[t], 14], Style[ x'[t], 14], Style[x''[t], 14]}]遅延微分方程式に関連する言葉についての説明は,「遅延微分方程式」を参照してください.