在MATLAB中求解ode, 5:估计误差,ODE23
从系列:用MATLAB求解ode
ODE23比较2阶和3阶的方法,以自动选择步长并保持指定的精度。它是最简单的MATLAB求解器,具有自动误差估计和连续插值等现代特征。ODE23适用于精度要求较粗的计算机图形等。
实现现代数值方法的软件有两个在ODE4和经典龙格-库塔等代码中不存在的特征。软件中的方法可以实现误差估计和步长自动控制。你不需要指定步长h,你需要指定你想要的精度。这些方法估计误差,并相应地调整步长。它们提供了一个完全精确的连续插值。它们不只是提供离散点集合上的解。它们提供了一个函数,定义了区间各处的解。因此,您可以绘制它,找到函数的零点,提供一个称为事件处理的工具,等等。
Larry Shampine是常微分方程数值解方面的权威。他是这本用MATLAB求解ode的教科书的主要作者。他现在是达拉斯南卫理公会大学的名誉教授。他是MathWorks的长期顾问,负责ODE套件的开发。夏皮恩和他的学生普里姆斯瓦夫·博加奇在1989年发表了这种方法。它是ODE23的基础,这是我们在MATLAB ODE套件中使用的第一个方法。
基本方法是o (3)误差估计是基于三阶方法和基础的二阶方法之间的差异。有四个斜坡。
第一个是函数在区间开始处的值。但这是基于FSAL的,首先和最后一样,斜率很可能是上一步剩下的。如果前一步成功,则此函数值与前一步中的最后一个函数值相同。
这个斜率用于进入区间的中间,函数在这里求值。该斜率用于步进3/4穿过区间,得到第三个斜率。然后使用这三个值执行该步骤。Yn + 1是这三个函数值的线性组合。然后对函数进行求值,得到区间结束时的第四个斜率。然后用这四个斜率来估计误差。
这里的误差估计是yn + 1和另一个解的估计值之间的差值这个解的估计值是由二阶方法得到的我们实际上没有求值。我们只需要这个方法和yn + 1之间的差值来估计误差。
将此估计误差与用户提供的公差进行比较。如果估计的误差小于公差,则步骤成功。第四个斜率,s4,变成了下一步的s1。
如果答案大于公差,那么误差可以作为调整步长的基础。在这两种情况下,误差估计是调整下一步步长的基础。这是Bogacki-Shampine Order 3(2)方法,也是ODE 23的基础。
让我们先来看看ODE23的一些非常简单的用法。我要用微分方程y ' = y,所以我要计算e ^ t,在区间0到1上调用ODE23,初值为1。没有输出参数。如果我叫它ODE23,它只是画出了解。在这儿。它只是产生了一个情节。它选择一个步长,从0到1,这里它得到e的最终值是2.7。
如果我提供输出参数。我说t, y = ODE23,它返回t和y的值,ODE23选择它想要的t的值。这是一个微不足道的问题。最终步长是0.1。在启动后,它选择初始步长为.08,以容忍任何错误。y的最终值是2.718,也就是e的值。
这就是ODE23的两个简单用法。如果不提供任何输出参数,它将绘制一个图。如果你提供输出参数t和y,它会返回t和y的值,选择t的值来满足错误。默认的容错是10的- 3次方。所以这个值精确到三位数。果然,这就是我们得到的。
现在让我们尝试一些更有挑战性的东西,看看自动错误控制步长选择的作用。设a等于1 / 4。然后令y0 = 15.9。如果设为16,也就是1 / a²,就会碰到奇点。现在微分方程是y '等于2 (a - t)乘以y方。我要把它和ODE23在区间从0到1从y0开始积分,把结果保存在t和y中,然后画出来。这是我的plot命令,这是解。
所以在a处有一个接近奇点的点,它几乎爆炸了。然后又稳定下来。所以当你到达奇点的时候,点会聚集在一起,然后回到奇点,但是当解稳定下来的时候,点之间的距离会越来越远。ODE解算器可以采取更大的步骤。
为了知道实际的步骤,我们来计算t的差,然后画出来。这是我们取的步长。我们看到在奇点附近取了一个小的步长0.25。当我们接近间隔的末尾时,步长会变大。最后,取到达区间尽头的步长作为最后一步。这就是ODE23的自动步长选择。
BS23有一个很好的自然插值这实际上已经存在了100多年。叫做埃尔米特三次插值。我们知道两点决定一条直线。两个点和两个斜率决定了一个三次函数。
在每个区间上我们都有y和yn + 1的值。我们还有两个斜率,也就是这个。我们有端点处的导数,yn '和yn + 1 ',这就是微分方程在这些点处的值。这四个值决定了一个经过这两个点的三次立方有两个斜率。
这个三次函数允许软件在区间内的任意点计算解,而不需要额外的代价(由函数f的附加值定义)。这可以用来绘制解的图,漂亮光滑的解的图,查找解的零点,进行事件处理,等等。ODE23提供的另一个特性。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。