NDSolveValue
NDSolveValue[eqns,expr,{x,xmin,xmax}]
根据含有独立变量 x 的常微分方程 eqns 的数值解,给出函数表达式 expr 的值,其范围为 xmin 到 xmax.
NDSolveValue[eqns,expr,{x,xmin,xmax},{y,ymin,ymax}]
在矩形区域内求解偏微分方程 eqns.
NDSolveValue[eqns,expr,{x,y}∈Ω]
在区域 Ω 内求解偏微分方程 eqns.
NDSolveValue[eqns,u,{t,tmin,tmax},{x,y}∈Ω]
在区域 Ω 内求解时变偏微分方程 eqns.
更多信息和选项
- NDSolveValue[eqns,y[x],{x,xmin,xmax}] 给出 y[x] 的解,而不是函数 y 本身.
- 微分方程必须以导数例如 y'[x] 的形式说明,用 D 获得,而不是用 Dt 得到的总导数.
- 可以用微分运算符 Grad (∇)、Div (∇.)、Laplacian (∇2) 和 Curl (∇) 来指定偏微分方程. 一般情况下,这些运算符像在 Inactive[op] 中一样,作为算子形式存在而不被计算.
- NDSolveValue 求解广范围的常微分方程以及许多偏微分方程.
- NDSolveValue 也可以求解许多时滞微分方程.
- 在常微分方程中,函数 yi 必须只依赖于单个变量 x. 在偏微分方程中,它们可能依赖多个变量.
- 微分方程必须包括足够的初始或边界条件,才能完全决定 yi 的解.
- 初始和边界条件一般以形式 y[x0]==c0、y'[x0]==dc0 等给出,但可能由更复杂的方程组成.
- c0、dc0 等可以是列表,指定 y[x] 是具有向量或通用列表值的函数.
- 周期边界条件可用 y[x0]==y[x1] 指定.
- 初始或边界条件中的 x0 不必位于求解范围 xmin 到 xmax.
- 在时滞微分方程中,初始历史函数以 y[x/;x<x0]==c0 形式给出,其中 c0 一般是 x 的函数.
- WhenEvent[event,action] 可能包含在方程 eqns 中,用来指定当 event 变成 True 时发生的 action.
- 可以用 DirichletCondition 和 NeumannValue 来指定边界值.
- NDSolveValue 中的微分方程可包含复数.
- NDSolveValue 可求解许多微分代数方程组,某些 eqns 是纯代数的或某些变量是隐式代数.
- yi 可以是因变量的函数,不需要包括所有这样的变量.
- 可以给出以下选项:
-
AccuracyGoal Automatic 寻求的绝对精确数字 Compiled Automatic 表达式是否应该自动编译 DependentVariables Automatic 所有相关变量的列表 EvaluationMonitor None 当计算函数时计算的的表达式 InitialSeeding {} 用于某些算法的播种方程 InterpolationOrder Automatic 最终输出的连续度 MaxStepFraction 1/10 每个步骤中最大的范围比例 MaxSteps Automatic 采用的最大步骤数 MaxStepSize Automatic 每一步的最大尺寸 Method Automatic 使用的方法 NormFunction Automatic 误差估计使用的范数 PrecisionGoal Automatic 寻求的精确数字 StartingStepSize Automatic 使用的初始步骤大小 StepMonitor None 每采取步骤时计算的表达式 WorkingPrecision MachinePrecision 内部计算使用的精度 - NDSolveValue 会调整它的步骤大小,因此解中的估计误差恰好在由 PrecisionGoal 和 AccuracyGoal 指定的公差之内.
- 选项 NormFunction->f 指定每个 yi 的估计误差应使用 f[{e1,e2,…}] 组合.
- AccuracyGoal 有效的指定在求解中每一步允许的绝对局部误差,其中 PrecisionGoal 指定相对局部误差.
- 如果当解的值接近零时,必须准确求解的话,AccuracyGoal 应设为大一些,或为 Infinity.
- AccuracyGoal 和 PrecisionGoal 的 Automatic 的默认设置等同于 WorkingPrecision/2.
- MaxSteps 的默认设置 Automatic 根据开始和终止时间,以及每个步骤的大小,估计 NDSolve 所需的最大步骤数. 如果结果不可行,则采用固定步骤数.
- MaxStepFraction 的设置指定由 NDSolve 采取的最大步骤,作为每个独立变量值的范围比例.
- 当 DependentVariables->Automatic 时,NDSolve 通过分析给定的方程,试图决定相关变量.
- NDSolveValue 一般通过依赖于方程类型的多个不同阶段求解微分方程. 当 Method->{s1->m1,s2->m2,…},阶段 si 由方法 mi 处理. 实际使用的阶段和它们的顺序由基于要求解的问题的 NDSolve 决定.
- 可能的求解阶段为:
-
"TimeIntegration" 微分方程组的时间积分 "BoundaryValues" 常微分方程边界值解 "DiscontinuityProcessing" 处理不连续微分方程的符号式处理 "EquationSimplification" 数值计算的方程形式化简 "IndexReduction" 微分代数方程的符号索引化简 "DAEInitialization" 微分代数方程的一致初始化 "PDEDiscretization" 偏微分方程的离散化 - 当 Method->m1 或 Method->{m1,s2->m2,…},方法 m1 假设为时间积分,因此 Method->m1 等同于 Method->{"TimeIntegration"->m1}.
- Method 选项的可能显式时间积分设置包括:
-
"Adams" 预测-校正亚当斯法,阶数从1至12 "BDF" 隐式向后差分公式,阶数为1至5 "ExplicitRungeKutta" 2(1) 至 9(8) 自适应嵌入对龙格库塔法 "ImplicitRungeKutta" 任意阶数隐式龙格库塔法系列 "SymplecticPartitionedRungeKutta" 可分哈密顿系统的交错龙格库塔法s - 当 Method->{"controller",Method->"submethod"} 或Method->{"controller",Method->{m1,m2,…}},可能的控制器方法包括:
-
"Composition" 构成子方法的列表 "DoubleStep" 双步法自适应步骤尺寸 "EventLocator" 响应指定的事件 "Extrapolation" 使用多项式外推自适应阶数和步骤大小 "FixedStep" 使用常量步骤大小 "OrthogonalProjection" 满足正交约束的投影解 "Projection" 满足一般约束的投影解 "Splitting" 分开方程组和是哦那个不同的子方法 "StiffnessSwitching" 如果检测到刚度从显式切换到隐式 - 主要用作子方法的方法包括:
-
"ExplicitEuler" 向前欧拉方法 "ExplicitMidpoint" 中点规则方法 "ExplicitModifiedMidpoint" 具有 Gragg 平滑的中点规则法 "LinearlyImplicitEuler" 线性隐式欧拉方法 "LinearlyImplicitMidpoint" 线性隐式中点规则法 "LinearlyImplicitModifiedMidpoint" 线性隐式 Bader 平滑中点规则法 "LocallyExact" 数值近似到本地精确符号式解 - 设置 InterpolationOrder->All 指定 NDSolve 应该产生使用与基本使用方法具有同样阶数的插值的解. »
范例
打开所有单元关闭所有单元基本范例 (7)
范围 (25)
常微分方程组 (7)
偏微分方程组 (5)
边界值问题 (5)
选项 (29)
InterpolationOrder (1)
MaxStepFraction (1)
使用 MaxStepFraction 确保不错过特征,和区间大小无关:
MaxStepSize (2)
更小的 MaxStepSize 设置保证 NDSolveValue 获取特征:
设置足够小的 MaxStepSize 保证不会错过任何事件:
Method (12)
TimeIntegration (5)
DiscontinuityProcessing (1)
NDSolveValue 会自动处理像 Sign 这样的不连续函数:
如果相应的选项被设置为无效的话,碰到断点,NDSolveValue 可能会无法继续进行计算:
IndexReduction (1)
DAEInitialization (1)
用前向配置法来初始化以避免在0点处有 Abs 项的问题:
应用 (15)
Lotka–Volterra 方程组 (1)
Lotka–Volterra 猎物捕食方程 [更多信息]:
Lorenz 方程组 (1)
Lorenz 方程组 [更多信息]:
热方程 (2)
有关热方程和适用的边界条件的更多信息,请参见 Heat Transfer 教程和 Heat Transfer PDE models 指南页面.
Wolfram 非线性波方程 (2)
n-体问题 (1)
简化的 3-体问题 [更多信息]:
声学方程 (1)
有关波方程和声学边界条件的更多信息,请参见 Acoustics in the Time Domain 教程和 Acoustics PDE models 指南页面.
物质输运 (1)
给定化学物种在一种材料内的反应速率,模拟一维化学物种穿过不同材料的过程. 右侧和左侧分别受到质量浓度和流入条件的影响:
有关物质输运方程和边界条件的更多信息,请参见 Mass Transport 教程和 MassTransport PDE models 指南页面.
属性和关系 (9)
NDSolveValue 给出解的函数,而 NDSolve 返回的结果是一个规则:
NDSolveValue 可直接返回在指定点的解的函数:
来看 NDSolve:
NDSolveValue 可直接返回解在几个点的值:
来看 NDSolve:
NDSolveValue 可直接返回涉及解的任意表达式的结果:
来看 NDSolve:
如果一个方程有多个解,NDSolveValue 会选取其中一个:
NDSolve 则会同时求出两个解:
具有独立变量的函数,NDSolve 有效地给出不定积分:
使用 NDSolve 作为 SystemModel 的一个求解器:
使用 SystemModel 模拟更大型的分层模型:
可能存在的问题 (12)
针对许多 NDSolveValue 消息,有特定的消息参考页面. 请到理解出错消息工作流程中了解怎样访问这些页面.
有多个解 (1)
微分代数方程 (2)
设 ,如果还不能求出方程的解,NDSolveValue 可能会改变给定的初始条件:
NDSolveValue 只能求解指数1的方程,但是 时方程指数为2:
把 AccuracyGoal 和 PrecisionGoal 设为较小的值以后,求出了一个解:
偏微分方程 (4)
文本
Wolfram Research (2012),NDSolveValue,Wolfram 语言函数,https://reference.wolfram.com/language/ref/NDSolveValue.html (更新于 2019 年).
CMS
Wolfram 语言. 2012. "NDSolveValue." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2019. https://reference.wolfram.com/language/ref/NDSolveValue.html.
APA
Wolfram 语言. (2012). NDSolveValue. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/NDSolveValue.html 年