NDSolve公司

NDSolve公司[情商,u个,{x个,x个最小值,x个最大值}]

找到常微分方程的数值解当量数对于函数u个自变量x个在范围内x个最小值x个最大值.

NDSolve公司[情商,u个,{x个,x个最小值,x个最大值},{,最小值,最大值}]

解偏微分方程情商在矩形区域上。

NDSolve公司[情商,u个,{x个,}Ω]

解偏微分方程情商在该地区Ω.

NDSolve公司[情商,u个,{t吨,t吨最小值,t吨最大值},{x个,}Ω]

求解含时偏微分方程情商在该地区Ω.

NDSolve公司[情商,{u个1,u个2,},]

求解函数 u个.

详细信息和选项

  • NDSolve公司给出了以下方面的结果插值函数物体。
  • NDSolve公司[情商,u个[x个],{x个,x个最小值,x个最大值}]为提供解决方案u个[x个]而不是函数u个自身。
  • 微分方程必须用导数表示,例如u个'[x个],使用获得D类,而不是使用日期.
  • 偏微分方程也可以使用微分算子来指定格拉德(),Div公司(.),拉普拉斯语(2)、和卷曲(). 通常,这些操作符用于非活动[操作]避免操作员进行评估。
  • NDSolve公司解一系列的常微分方程以及许多偏微分方程。
  • NDSolve公司也可以求解许多时滞微分方程。
  • 在常微分方程中,函数u个必须仅依赖于单个变量t吨在偏微分方程中,它们可能依赖于多个变量。
  • When事件[事件,行动]可以包含在方程式中当量数指定行动事件成为真的.
  • 微分方程必须包含足够的初始或边界条件,以确定u个完全。
  • 初始和边界条件通常在表格中说明u个[x个0]==c(c)0,u个'[x个0]==直流电0等,但可能包含更复杂的方程。
  • 这个c(c)0,直流电0等可以是列表,指定u个[x个]是具有向量或常规列表值的函数。
  • 周期边界条件可以使用u个[x个0]==u个[x个1].
  • 要点x个0出现在初始或边界条件中的不必位于范围内x个最小值x个最大值寻求解决方案。
  • 边界值也可以使用Dirichlet条件纽曼价值.
  • 在时滞微分方程中,初始历史函数的形式如下u个[x个/;x个<x个0]==c(c)0,其中c(c)0通常是的函数x个.
  • 中的微分方程NDSolve公司可能涉及复数。
  • NDSolve公司可以解许多微分代数方程,其中一些情商是纯代数的,或者一些变量是隐式代数的。
  • 这个u个可以是因变量的函数,不需要包括所有这些变量。
  • 可以提供以下选项:
  • 准确性目标自动寻求的绝对精度数字
    已编译自动表达式是否应自动编译
    依赖变量 自动所有因变量列表
    评估监控器 每当函数求值时要求值的表达式
    初始播种{}几种算法的种子方程
    插值顺序 自动最终输出的连续度
    最大步长分数 1/10每个步骤要覆盖的最大范围分数
    最大步长 自动要采取的最大步骤数
    最大步长 自动每个步骤的最大尺寸
    方法 自动要使用的方法
    Norm函数 自动用于误差估计的范数
    精准度目标自动寻求的精度位数
    开始步长 自动使用的初始步长
    步骤监视器 执行步骤时要计算的表达式
    工作精度 机器精度内部计算中使用的精度
  • NDSolve公司调整其步长,以便解决方案中的估计误差正好在精准度目标准确性目标.
  • 选项Norm函数->如果指定每个u个应结合使用如果[{e(电子)1,e(电子)2,}].
  • 准确性目标有效地指定了在查找解决方案的每个步骤中允许的绝对局部错误,而精准度目标指定相对本地错误。
  • 如果溶液的值接近零时必须准确地遵循,准确性目标应设置得更大,或设置为无穷.
  • 默认设置为自动对于准确性目标精准度目标等于工作精度/2.
  • 默认设置为自动对于最大步长估计要采取的最大步骤数NDSolve公司,取决于开始和停止时间以及步长的估计。如果不可能,则采取固定数量的步骤。
  • 的设置最大阶跃分数指定要采取的最大步骤NDSolve公司作为每个自变量的值的范围的分数。
  • 使用依赖变量->自动,NDSolve公司试图通过分析给出的方程来确定因变量。
  • NDSolve公司根据方程的类型,通常通过几个不同的阶段来求解微分方程。使用方法->{1->1,2->2,},阶段 通过方法处理。实际使用的阶段及其顺序由NDSolve公司,基于要解决的问题。
  • 可能的解决方案阶段包括:
  • “时间集成”微分方程组的时间积分
    “边界值”常微分方程边值解
    “中断处理”不连续微分方程处理的符号处理
    “方程式简化”数值计算中方程形式的简化
    “索引缩减”微分代数方程的符号指数约简
    “DAE初始化”微分代数方程的一致初始化
    “PDE离散化”偏微分方程的离散化
  • 使用方法->1方法->{1,2->2,},方法1假设用于时间积分,因此方法->1等于方法->{“时间集成”->1}.
  • 可能的显式时间积分设置方法选项包括:
  • “亚当斯”预测器1到12阶修正亚当斯方法
    “巴西存托凭证”1到5阶隐式后向微分公式
    “显式RungeKutta”自适应嵌入对2(1)到9(8)伦格——库塔方法
    “IDA”DAE的隐式后向微分公式
    “暗示龙格库塔”任意家庭订单隐式Runge——库塔方法
    “辛分区RungeKutta”交错龙格——可分离哈密顿系统的Kutta方法
  • 使用方法->{"控制器",方法->"子方法"}方法->{"控制器",方法->{1,2,}},可能的控制器方法包括:
  • “组成”组成子方法列表
    “DoubleStep”(双步)通过加倍调整步长阶梯法
    “事件定位器”响应指定事件
    “外推”利用多项式外推调整阶数和步长
    “固定步骤”使用恒定步长
    “正交投影”满足正交约束的项目解决方案
    “投影”满足一般约束的项目解决方案
    “拆分”分裂方程并使用不同的子方法
    “刚度切换”如果检测到刚度,则从显式方法切换到隐式方法
  • 主要用作子方法的方法包括:
  • “显式Euler”正向欧拉方法
    “显式中点”中点规则法
    “ExplicitModifiedMidpoint”带Gragg平滑的中点规则法
    “LinearlyImplicitEuler”线性隐式欧拉方法
    “LinearlyImplicitMidpoint”线性隐式中点规则法
    “线性隐式修改中点”线性隐式Bader平滑中点规则法
    “本地精确”局部精确符号解的数值逼近
  • 设置插值顺序->全部指定NDSolve公司应生成使用与所用底层方法相同顺序的插值的解决方案。 »

示例

全部打开全部关闭

基本示例  (7)

求解一阶常微分方程:

在绘图中使用解决方案:

在绘图中使用函数及其导数:

查找特定值:

二阶非线性常微分方程:

绘制函数及其前两个导数:

常微分方程组:

求解一维热方程:

方程式的替代形式:

求解泊松方程磁盘:

在上查找最小曲面磁盘具有正弦边界条件。

求解区域上的耦合非线性sine-Gordon方程。

范围  (25)

常微分方程  (8)

指定任意顺序方程。还原为正常形式是自动完成的:

直接区分溶液以绘制相图:

直接指定方程组:

求解向量值函数:

绘制解决方案的四个组成部分:

将谐振子指定为二阶方程的不同等效方法:

作为一阶方程组:

使用具有从初始条件推导出的尺寸的向量变量:

使用矩阵值变量计算基本矩阵解:

与精确解进行比较:

定义范德波尔方程:

默认解算器自动处理的解决方案的“僵硬”行为:

其他方法可能无法解决此系统:

方程可以有多个不同的解:

解决方案[x个]是连续的,因为它将分段函数积分一次:

解决方案[x个]是可微的,而'[x个]仅连续:

偏微分方程  (5)

一维非线性平流扩散方程:

定义混合抛物线双曲线型PDE系统:

具有周期边界条件的二维非线性sine-Gordon方程:

最后一次绘制解决方案:

绘制溶液径向横截面的时间演变:

求解带狭缝区域上的波动方程:

在曲线边界上用周期边界条件求解泊松方程:

可视化解决方案:

边值问题  (5)

非线性多点边值问题:

求解非线性扩散方程Dirichlet和Neumann边界条件从初始种子开始.

可视化结果。

求解非线性方程Dirichlet边界条件从初始种子开始.

可视化结果。

求解一个复值非线性反应方程使用Dirichlet边界条件:

可视化结果:

求解带有非线性荷载项的边值问题:

可视化结果:

延迟微分方程  (2)

求解具有两个恒定延迟和初始历史函数的延迟微分:

不连续性传播自以等于延迟的间隔:

研究线性时滞微分方程的稳定性:

混合和间断方程  (4)

使用自动事件生成的不连续右侧微分方程:

右手边按固定时间间隔变化的微分方程:

在整个轴每次穿过负值轴:

滑动模式下的周期解:

微分代数方程  (1)

具有代数约束的微分方程:

泛化和扩展  (1)

函数的名称不需要是符号:

选项  (29)

精确度目标和精确度目标  (1)

使用默认值求解对初始条件敏感的天体力学方程:

更高的精确度和精确度目标会产生不同的结果:

增加目标可以进一步扩展正确的解决方案:

依赖变量  (1)

建立一个非常大的方程组:

求解所有因变量,但只保存x个1:

评估监控器  (2)

评估总数:

连续评估之间的距离;负距离是指拒绝的步长:

初始播种  (2)

为边界值问题指定0的初始种子设定:

指定依赖于空间坐标的初始种子设定:

插值顺序  (1)

使用插值顺序->全部要获得与方法相同的插值顺序:

这比使用的默认插值顺序更耗时:

在以下步骤之间效果更好:

最大步长分数  (1)

积分区间内相对尺寸较小的特征可能会被忽略:

使用最大步长分数为了确保不遗漏功能,与间隔大小无关:

最大步长  (1)

集成在未达到请求的间隔时停止:

解决该解决方案需要更多步骤:

在相平面中绘制解决方案:

对于振荡器的无限积分,达到最大步数:

可以请求更多步骤:

最大步长  (2)

默认的步进控制可能会丢失突然变化的功能:

较小的最大步长设置可确保NDSolve公司捕捉特征:

正在尝试计算小于的正整数数错过了几个事件:

设置足够小的最大步长确保不会错过任何事件:

方法  (12)

时间集成  (4)

指定显式Runge——用于微分方程时间积分的库塔方法:

指定显式Runge——用于时间积分的8阶库塔法:

指定用于微分方程时间积分的显式Euler方法:

外推往往需要非常大的步骤:

PDE结晶  (2)

Burgers方程的解可能会变陡,导致数值不稳定:

指定足够精细的空间离散化以解析正面:

锋面形成后,溶液相对快速衰减:

指定使用有限元方法进行空间离散化:

边界值  (1)

解决边值问题:

使用默认选项,该方法可以找到平凡的解决方案:

为指定不同的启动条件“拍摄”找到不同解决方案的方法:

不连续性处理  (1)

NDSolve公司自动处理不连续函数,如签名:

如果关闭处理,NDSolve公司可能在不连续点失效:

对于某些时间积分方法,解决方案可能非常不准确:

找到解决方案的等效方法是使用“中断签名”:

这些解决方案实际上是相同的:

当解处于滑动模式时,不连续性签名为0:

方程简化  (2)

由于平方根函数不够平滑,无法完成求解:

通过形成残差并作为DAE系统解决,可以找到一个解决方案:

另一个解决方案分支可以通过指定一致的值:

使用子选项“简化系统”->真的,NDSolve公司对具有足够简单形式的组件使用符号解决方案:

指数缩减  (1)

使用指数缩减的约束摆的指数3公式:

默认方法只能解决索引1问题:

符号索引缩减导致的问题可以解决:

使用索引为0的缩减和保持约束的投影方法求解:

按时间步长绘制两个解决方案的隐式能量约束:

DAE初始化  (1)

使用正向并置进行初始化以避免防抱死制动系统期限为0:

Norm函数  (1)

使用不同的误差估计标准绘制实际的解决方案误差:

最佳解决方案图:

开始步长  (1)

对于非常大的间隔,可能会错过靠近起点的短寿命特征:

设置足够小的步长以确保输入不会丢失:

步骤监视器  (3)

在解决方案过程中采取步骤的每个点绘制解决方案:

查找解决方案所涉及的步骤总数:

的值之间的差异x个在连续步骤中:

工作精度  (1)

100周期以上谐振子的解的误差:

当工作精度增加时,局部公差也相应增加:

由于工作精度高,有时“外推”该方法非常有效:

100周期以上谐振子的解的误差:

当工作精度增加时,局部公差也相应增加:

由于工作精度高,有时“外推”该方法非常有效:

应用  (35)

常微分方程  (5)

模拟双势阱中粒子的Duffing方程:

解在很大程度上取决于初始条件:

洛伦兹方程[更多信息]:

洛特卡——Volterra捕食者-食饵方程[更多信息]:

相平面图:

看看加夫里洛夫号上蓝天灾难轨道的外观——Shilnikov模型:

减少了三体问题[更多信息]:

适合多种不同初始条件的配方:

偏微分方程  (10)

可以在PDE型号概述.

深度土壤温度的简单模型x个表面定期加热:

周期边界条件下的简单波演化:

绘制解决方案:

Wolfram非线性波动方程[更多信息]:

二维Wolfram非线性波动方程:

非线性Schr中周期势扰动的孤子轮廓ö丁格方程:

使用斯托克斯方程计算狭窄通道中的流体速度场:

用棒中的热源模拟温度场:

解决PDE:

可视化解决方案:

定义模型变量变量具有模型参数的瞬态声压场部分:

定义初始条件集成电路向右传播的声波:

在方程的右端设置一个坚固的边界:

解决PDE:

可视化时域中的声场:

以一个反应速率模拟一维化学物质在不同材料中的传输。右侧和左侧分别承受质量浓度和流入条件:

 删除。(-d del c(x))+a c(x

设置静止质量传输模型变量变量:

设置区域:

指定质量传输模型参数物种扩散率和反应速率活跃于该地区:

指定物种通量边界条件:

指定质量浓度边界条件:

设置方程式:

解决PDE:

可视化解决方案:

延迟微分方程  (1)

查看Mackey的解决方案——呼吸动力学的玻璃延迟微分方程:

混合微分方程  (5)

模拟在每次弹跳中保持95%速度的弹跳球:

模拟球在台阶上弹跳:

每次线性振荡器溶液穿过负值轴,将其反射到轴:

该重置振荡器的解表现出混沌行为:

在底片上绘制溶液带有反射点直方图的轴:

用正弦力模拟一个一自由度冲击振荡器:

建立一个阻尼振荡器的模型,该振荡器以固定的时间间隔进行反冲:

轨迹最终进入一个一致的轨道:

机械系统  (3)

在笛卡尔坐标系中模拟摆的运动。利用牛顿第二运动定律推导控制方程,,带有力图:

模拟系统:

给钟摆增加阻尼,使其随时间减慢:

摆锤稳定在垂直固定点:

通过修改约束将杆更改为刚性弹簧:

该解决方案包含高频弹簧振荡:

模拟从水平面释放的单位质量和长度的双摆。首先,使用牛顿第二定律推导运动方程:

通过将方程和约束作为不变量来模拟系统:

可视化双摆的运动:

使用不同的摩擦力模型,在由弹簧固定在墙上的移动传送带上对块进行建模包括粘性、库仑、斯特里贝克和静电。比较不同模型的位置和速度:

块的牛顿方程:

粘性摩擦与相对速度成比例:

挡块的稳定度刚好高于弹簧的自然长度1:

库仑摩擦与相对速度的符号成正比:

滑块随皮带移动,直到弹簧力足够大:

斯特里贝克摩擦是精确的库仑摩擦F_(str)=γsgn(v)e^(-2模板框[{v},Abs]):

低速时的变化略有减少:

静摩擦将块固定到位,直到弹簧力超过某个值μ取决于表面粗糙度。使用离散变量卡住了块卡住时设置为1,否则设置为0:

检查弹簧力是否小于μ,如果滑块没有相对于皮带移动:

挡块反复粘附在皮带上,然后由于弹簧力而滑脱:

比较不同的模型:

电气系统  (6)

模拟RLC电路对电压阶跃的响应时间:

将分量定律与基尔霍夫定律一起用于连接:

模拟阶跃响应:

模拟RLC电路对电压阶跃的响应时间:

模拟阶跃响应:

显示步骤响应:

模拟并联RLC电路的行为:

显示恒定输入电流下的响应:

显示R、L、C部件中的电流和产生的电压:

为晶体管放大器电路建模:

输入电压正弦变化:

晶体管以非线性方式分配电压,这取决于:

使用欧姆定律和基尔霍夫定律确定每个节点的控制方程:

模拟奇异方程组:

晶体管放大电压相对于:

建立DC-DC模型升压转换器来自输入电压电平不及物动词至所需输出电压电平虚拟数据使用脉冲宽度调制反馈控制[t吨]:

使用基尔霍夫定律得到上述电路的模型:

控制信号[t吨]将晶体管打开一小部分不及物动词/虚拟数据每个周期的τ:

从较低电压升压不及物动词=24至更高电压虚拟数据=36:

建立DC-DC模型buck-boost变换器从输入电压水平不及物动词至所需的输出电压水平vo(沃尔沃)使用脉冲宽度调制反馈控制[t吨]:

使用基尔霍夫定律得到上述电路的模型:

控制信号[t吨]将晶体管打开一小部分虚拟数据/(不及物动词+虚拟数据)每个周期的:

从较低电压升压不及物动词=24至更高电压虚拟数据=36:

从较高电压降压不及物动词=24至较低电压虚拟数据=16:

液压系统  (3)

当水通过管道从一个水箱流向另一个水箱时,模拟两个圆柱形水箱中水的高度变化:

使用压力关系和质量守恒:

用Hagen对穿过管道的流量进行建模——Poiseuille关系:

模拟系统:

将第二个油箱建模为泄漏油箱:

由于第二个油箱泄漏,两个油箱最终都会排出:

当水通过管道从一个水箱流向另一个水箱时,模拟两个半球形水箱中水的高度变化:

模拟三个水箱中水的高度变化,以便一个水箱向其他水箱供水:

用Hagen对管道中的流量进行建模——Poiseuille关系:

第一根管道的流速将等于其他两根管道的流速之和:

模拟系统:

将第三个油箱建模为泄漏油箱:

前两个储罐达到平衡,然后以相同的速度排放:

化学系统  (2)

建立自动催化反应动力学模型:

    

速率方程如下所示:

物种的集中度,b条,c(c)应始终为常量:

解决并可视化三个物种的进化:

模拟两种物质(FLB和ZHU)与二氧化碳持续混合的化学过程:

每体积单位的二氧化碳流入量表示为:

速率方程如下所示:

平衡方程如下:

求解方程并确定FLB公司,ZHU公司,二氧化碳、和ZLA公司:

属性和关系  (7)

符号与数值微分方程求解:

定义公式雅各比森:

数值计算区间内不同点的积分值:

对于自变量的函数,NDSolve公司有效地给出了一个不定积分:

查找事件与查找解决方案函数的根有关:

事件位置准确高效地查找根:

这给了作为的函数对于微分方程:

查找的根:

求解等效边值问题:

使用NDSolve公司作为解决方案系统模型:

根据模拟结果绘制变量:

使用系统模型要建模更大的层次模型,请执行以下操作:

绘制储罐系统中随时间变化的储罐液位:

可能的问题  (14)

许多NDSolve公司消息实现了特定的消息引用页。查看如何在中访问它们了解错误消息工作流。

数值错误  (4)

随着您离初始条件越来越远,错误往往会增加:

找出数值解和精确解之间的区别:

非线性方程的误差:

对于高阶方法,默认插值在步骤之间可能有较大误差:

按照与方法对应的顺序进行插值可以减少步骤之间的误差:

有限元方法使用的一些算法是不确定的。这意味着在这些算法中使用了一些随机性,如果运行相同的输入,结果会略有不同:

求解同一个PDE两次。解决方案可能会有小的差异:

微分代数方程  (3)

NDSolve公司无法自动处理索引大于1:的系统

通过对系统进行指数缩减,可以解决高index系统的问题:

下面是微分代数方程组:

使用查找解决方案:

NDSolve公司如果无法找到解决方案,可以更改指定的初始条件:

更改迭代的初始开始猜测以避免此类问题:

NDSolve公司仅限于索引1,但具有具有索引2:

要解决高索引系统,请使用索引缩减将DAE减少到索引1:

默认方法可能无法收敛到默认公差:

带下部准确性目标精准度目标设置,找到解决方案:

这个“状态空间”时间积分方法可以通过默认公差解决此问题:

偏微分方程  (4)

可以在PDE型号概述.

定义非线性PDE:

空间离散化基于初始值,其变化小于最终值:

通过增加空间栅格点的最小数量,可以准确计算最终值:

该图显示了空间上更复杂的解决方案的开始:

用阶跃函数的初始值定义热量方程:

初始值中的不连续可能会导致太多空间栅格点:

将空间栅格点的数量设置得越小,解决方案就越好:

用初始值定义拉普拉斯方程:

解算器仅适用于作为初值(Cauchy)问题的方程:

这种不稳定表现为数值不稳定:

边值问题  (1)

这找到了一个边值问题的平凡解:

您可以通过给出解决方案搜索的起始条件来查找其他解决方案:

未知函数的定义  (1)

未知函数的定义可能会影响评估:

清除未知函数的定义可以修复此问题:

Wolfram Research(1991),NDSolve,Wolfram语言函数,https://reference.wolfram.com/language/ref/NDSolve.html(2019年更新)。

文本

Wolfram Research(1991),NDSolve,Wolfram语言函数,https://reference.wolfram.com/language/ref/NDSolve.html参考文件(2019年更新)。

CMS公司

沃尔夫拉姆语言。1991年,《NDSolve》,Wolfram语言与系统文档中心。Wolfram研究。上次修改时间2019年。https://reference.wolfram.com/language/ref/NDSolve.html。

亚太地区

沃尔夫拉姆语言。(1991). NDSolve。Wolfram语言与系统文档中心。检索自https://reference.wolfram.com/language/ref/NDSolve.html

BibTeX公司

@misc{reference.wolfram_2023_ndsolve,author=“wolfram Research”,title=“{ndsolve}”,year=“2019”,howpublished=“\url{https://reference.wolfram.com/language/ref/ndsolve.html}”]}

BibLaTeX公司

@online{reference.wolfram_2023_ndsolve,organization={wolfram Research},title={ndsolve},year={2019},url={https://reference.jolfram.com/language/ref/ndsolve.html},note=[访问时间:2024年4月19日]}