从系列:解决matlab的杂物
如果寻求的解决方案缓慢地变化,则据说一个问题是僵硬的,但附近有附近的解决方案随着迅速而变化,因此数值方法必须采取小步骤以获得令人满意的结果。金宝搏官方网站火焰模型表现出刚度。以“s”结尾的名称的颂词求解器,例如ode23和ode15s,采用隐含方法,并旨在用于僵硬的问题。这些方法每步需要更多的工作,但需要更少的步骤。
我想通过运行ode45来说明刚度的重要概念,ode45是主要的MATLAB ODE求解器,在我们的火焰示例中。微分方程是y ' = y²- y³,我要选一个非常小的初始条件,10 ^ (- 6)t的最终值是2 / y0,我将施加一个适度的精度要求,10 ^ (- 5)
现在让我们以默认输出运行ODE45。现在,看到它正在拍摄 - 它在这里慢慢地移动。它正在采取很多步骤。所以我在这里拿走了停止按钮。它的工作非常努力。让我们放大并了解为什么它采用这么多步骤,这里非常密集的步骤。
这是刚度。它满足了我们的精度要求。所有这些步骤都在1的10 ^(- 6)次方范围内,但是需要非常小的步骤才能完成。这些步骤是如此之小,以至于图形甚至不能识别步骤的大小。
这是刚度。这是一个效率问题。它在做我们要求的事情。它满足了精度的要求,但需要采取非常小的步骤。
让我们试试另一个ODE求解器——ode23。把这个改成23,看看效果如何。出于同样的原因,它也在采取非常小的步骤。如果我们放大这里,我们会看到同样的行为。但是为了达到预期的精度,它采取了非常小的步骤。
现在让我介绍一个新的求解器,ode23。s表示刚度。这是为了解决棘手问题而设计的。然后,它上升,转弯,只需要几步就能得到最终的结果。它在那里很快地转弯。
我们将看到Ode23S如何在一分钟内工作,但首先让我们试图定义僵硬。这是一个定性概念,没有精确的数学定义。这取决于问题,也取决于求解器和准确性要求。
但这是一个很重要的概念。我们说,如果一个问题的解决方案是非常缓慢的,但附近有解决方案是非常迅速的。金宝搏官方网站因此,数值计算必须采取小步骤才能得到满意的结果。
常微分方程的硬质方法必须是隐含的。他们必须涉及涉及从前向时间向后看的公式。这些方法的原型是落后的欧拉方法,或隐式欧拉方法。
这个公式定义了y (n + 1)但没有告诉我们如何计算。我们要解出y (n + 1)的方程。我不打算详细讲具体是怎么做的。它涉及到一些类似牛顿法的东西,需要知道导数,或者f的导数的近似值,但这让你知道在硬方法中你可以期待什么。
我喜欢拿在西南部的峡谷中徒步旅行做个比喻。像ode23和45这样明确的方法在峡谷的岩壁上采取步骤,在峡谷的两侧来回地走,在峡谷中取得非常缓慢的进展。而隐式方法,如ode15,向下看峡谷,向前看你想去的地方,在峡谷中快速前进。
刚性求解器ode23s使用一个隐式二阶公式和一个相关的三阶误差估计器。它计算f在每一步对t和f的偏导数,所以代价很高。它在粗糙的误差容忍度方面很有效,比如图形精度。而且它的开销相对较低。
作为比较,刚性求解器ode15s可以被配置为使用可变阶数值分化公式,NDF或与向后分化公式BDF相关的。它既没有将若干函数的函数节省多个例子。该订单在一个和五之间自动变化,它会频繁地评估部分衍生物,并且在23s的较高公差处看到了高效。
您也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站表现。其他MathWorks国家网站不适合从您的位置访问。