How to| 求解时滞微分方程
您可以使用标准微分方程求解函数 NDSolve 来对具有常数时滞的时滞微分方程进行数值式求解. 它返回一个插值函数,该插值函数可以很容易地与其它函数一起使用.
以时滞为1、初始历史函数为
的一阶时滞微分方程为例. 用 NDSolve 对其求解,并将解存为 sol1. NDSolve 的第一个参数是时滞微分方程,第二个参数是您要求解的变量,第三个参数是变量的变化范围:
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 将它们包围. 如要给图形添加图例,您将还需要加载软件包 Plot Legends Package:
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]}}]求解具有两个常数时滞
和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] 及其一阶、二阶导数 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]}]与时滞微分方程相关的术语解释,请参阅 "时滞微分方程".