此为 Mathematica 7 文档,内容基于更早版本的 Wolfram 语言
查看最新文档(版本11.2)

NDSolve

Updated In 7 Graphic
NDSolve[eqns, y, {x, xmin, xmax}]
求解函数 y 的常微分方程 eqns 的数值解,自变量 x 的范围为 xminxmax
NDSolve[eqns, y, {x, xmin, xmax}, {t, tmin, tmax}]
用来求解偏微分方程 eqns 的数值解。
NDSolve[eqns, {y1, y2, ...}, {x, xmin, xmax}]
用来求解函数 yi 的数值解。
  • NDSolve[eqns, y[x], {x, xmin, xmax}] 给出 y[x] 的解而不是函数 y 自身。
  • 微分方程必须用诸如 y'[x] 的导数来表示,用 D 求导,并不是所有导数用 Dt 来获取。
  • NDSolve 用来求解广泛的常微分方程,以及一些偏微分方程。
  • NDSolve 还可以用来求解时滞微分方程。
  • 在常微分方程中函数 yi 仅依赖与单个变量 x。在偏微分方程中它们可能依赖于多个变量。
  • 微分方程必须包括足够的初始条件或边界条件来完全确定 yi 的解。
  • 初始条件和边界条件通常以 y[x0]Equalc0y'[x0]Equaldc0 等形式给出,但也可能由更多复杂的方程构成。
  • c0dc0 等可以是一个列表,它指定 y[x] 是有向量或普通列表值的函数。
  • 周期边界条件可以用 y[x0]Equaly[x1] 指定。
  • 出现在初始条件或边界条件的点 x0 不必位于解所考察的范围 xmin xmax 内。
  • 在时滞微分方程中, 初始历史函数以 y[x/;x<x0]Equalc0 的形式给出, c0 是一般的x 的函数。
  • NDSolve 中的微分方程可以包含复数。
  • NDSolve 可以求解许多微分代数方程,其中某些 eqns 是纯代数,某些可以是隐含代数。
  • yi 可以使有应变量的函数,不需要包含所有这样的变量。
  • 可以给出以下选项:
AccuracyGoalAutomatic搜索的绝对精度的位数
DependentVariablesAutomatic所有应变量的列表
EvaluationMonitorNone每当计算函数时需要计算的表达式
InterpolationOrderAutomatic最终输出的连续次数
MaxStepFraction1/10范围的最大步骤以覆盖每个步骤
MaxSteps10000采用步骤的最大数目
MaxStepSizeAutomatic每个步骤的最大步长
MethodAutomatic使用的方法
NormFunctionAutomatic误差估计使用的规范
PrecisionGoalAutomatic搜索精度的数目
StartingStepSizeAutomatic初始步长
StepMonitorNone当采用一个步长时,计算的表达式
WorkingPrecisionMachinePrecision内部计算使用的精度
  • 选项 NormFunction->f 指定每个 yi 的估计误差可以用 f[{e1, e2, ...}] 组合。
  • 在解的值接近 0 时,如果要准确地得到该解,应设置较大的 AccuracyGoal,或是 Infinity
  • MaxStepFraction 的设置指定 NDSolve 采用的最大步骤,它是每个独立变量值所在范围的分式。
  • Method 选项的可能设置包括:
"Adams"次数从 1 到 12 的预示校正 Adams 方法
"BDF"次数从 1 到 5 的隐式后向微分公式
"ExplicitRungeKutta"自适应的从 2(1) 到 9(8) 的嵌入对 Runge-Kutta 方法
"ImplicitRungeKutta"任意次数的隐含 Runge-Kutta 方法的簇
"SymplecticPartitionedRungeKutta"
分别对 Hamiltonian 系统交叉存取的 Runge-Kutta 方法
  • 设置 Method->{"controller", Method->"submethod"}Method->{"controller", Method->{m1, m2, ...}},可能的控制方法包括:
"Composition"子方法组成列表
"DoubleStep"双倍步骤方法的自适应步骤
"EventLocator"对应指定的事件
"Extrapolation"用多项式插值方法调整次数步长
"FixedStep"用一个固定的步长
"OrthogonalProjection"投影解来执行正交约束条件
"Projection"投影解来执行普通约束条件
"Splitting"分开方程和用不同的子方法
"StiffnessSwitching"如果检测到强度,在显式和隐式之间的切换
  • 主要用作子方法的方法包括:
"ExplicitEuler"前 Euler 方法
"ExplicitMidpoint"中点法则
"ExplicitModifiedMidpoint"有 Gragg 平滑的中点法则
"LinearlyImplicitEuler"线形隐式 Euler 方法
"LinearlyImplicitMidpoint"线形隐式中点法则
"LinearlyImplicitModifiedMidpoint"
线形隐式 Bader-平滑的中点法则
"LocallyExact"数值近似值,局部提取符号解
2 的新功能 | 7 中的修改功能