从系列:在MATLAB常微分方程求解
克里夫·莫勒尔,MathWorks公司
一个问题被认为是刚性的,如果溶液中寻求缓慢变化,但也有附近的解决方案,迅速变化,所以数值方法必须采取小步骤,以获得满意的效果。金宝搏官方网站火焰模型表明刚度。ODE求解器与名称中的“s”,如ODE23s和ODE15s,应用隐式方法结束,并适用于刚性问题。这些方法需要每步更多的工作,但需要很多步骤较少。
我希望通过我们的火焰例如运行ODE45,主MATLAB ODE求解,来说明刚性的重要概念。差分方程为y主要为y平方减Y立方,我要去选择一个fairly--极小的初始条件,10到负第六。T的最终值是2比Ÿ没出息,我要实行适度的精度要求,10的负第五。
现在让我们运行ODE45其默认输出。现在,看到它的taking--它的移动速度很慢这里。它采取很多步骤。所以我在这里take-按下停止按钮。它的工作很辛苦。让我们在和缩放看到它为什么在这里采取这么多措施,非常密集的步骤。
这是刚度。它满足我们规定的精度要求。所有这些步骤都在10至一负第六,但它采取非常小步骤来做到这一点。这些步骤是如此之小,图形甚至不能辨别步长。
这是刚度。这是一个效率的问题。它是做什么的,我们提出的要求。它满足精度要求,但它不得不采取非常小的步骤去做。
让我们尝试另一个ODE solver-- ODE23。只需将其更改为23,看看它做什么。它也采取小步出于同样的原因。如果我们在这里放大,我们将看到同样的这种行为。但它采取以达到所需的精度非常小的步骤。
现在,让我介绍一个新的求解器,ode23s。在S刚度。这是设计来解决刚性问题。只听轰的一声,这是不言而喻了,原来的角落,它只需几个步骤来获得最终结果。在那里,它原来的角落非常快。
我们将看到ode23s如何在一分钟,但首先让我们试着来定义的刚度。那就是没有一个精确的数学定义了质的概念。这取决于问题,而且对解算器和精度要求。
但它是一个重要的概念。我们说一个问题是僵硬如果解决方案正在寻求非常缓慢,但也有附近的解决方案非常迅速。金宝搏官方网站所以数值方法必须采取小步骤,以获得满意的效果。
常微分方程生硬的方法必须是隐含的。他们必须涉及到包括从向前时间步长向后看的公式。这些方法的原型是向后欧拉法,或隐式欧拉法。
这个公式,它involves--定义是否加1,但并没有告诉我们如何计算它。我们必须解决这个等式是否加1。而且我不打算详谈关于我们如何真正做到这一点。它涉及像牛顿方法would--需要知道的衍生物,或近似f的衍生物。但是,这给你的,你可以在僵硬的方法会发生什么的想法。
我喜欢做一个类比采取加息在我们这里有西南的狭缝型峡谷之一。显式方法,如ODE23和45采取步骤峡谷的墙壁上来回跨越峡谷的两侧,使下峡谷进展非常缓慢。而隐式的方法,如ode15s,向前看顺着峡谷和你想要去,使峡谷的快速进步向前看。
刚性求解器,ode23s,使用隐式的二阶公式和相关联的三阶误差估计。它计算f的偏导数相对于两者是叔和f在每一步骤,所以这是昂贵的。这是在原油误差容限高效率,像图形的精度。它具有相对低的开销。
通过比较的方式,刚性求解器ode15s,可以被配置为使用所述可变顺序数值微分公式,NDF,或相关的向后分化式BDF。无论情况下,它可节省超过前面的步骤功能的几个值。顺序变化之间自动一个和五个,则计算偏导数较不频繁,并没有看到在较高的公差然后23S高效。