从系列:在MATLAB中求解ode
克里夫硅藻土,MathWorks
ODE23比较的顺序两个和三个,能自动选择步长,并保持规定的精度的方法。这是一个具有现代化功能,如自动错误估计和连续插值最简单的MATLAB求解。ODE23适于粗精度的要求,如计算机图形。
实现现代数值方法的软件具有ODE4和经典龙格-库塔等代码中不存在的两个特性。软件中的方法可以估计误差并提供自动的步长控制。你没有指定步长h,你指定的是你想要的精度。同时,该方法还可以估计误差并相应地调整步长。它们提供了一个完全精确的连续插值。它们不只是提供离散点集的解。它们提供了一个函数,该函数定义了区间内的所有解。你可以绘制它,找到函数的零点,提供一个叫做事件处理的功能,等等。
拉里Shampine是常微分方程的数值解的权威。他是这本教科书关于与MATLAB解决常微分方程的主要作者。他在达拉斯的南卫理公会大学的,现在,名誉教授。而且他已经有很长一段时间顾问,我们ODE套房的发展MathWorks的。Shampine和他的学生,普热Bogacki,发表了这个方法,于1989年并且,第一个方法,我们将使用MATLAB ODE套房出来它是ODE23的基础。
基本方法是(3)误差估计是基于阶三法和阶二法的差值。有四个斜坡。
第一个是该函数的在所述时间间隔的开始的值。但是,这是基于一种叫做FSAL,首先在去年一样,在这里即斜率最有可能从上一步骤遗留下来的。如果上一步是成功的,这个函数值是一样的,从上一步骤中的最后一个函数值。
这个斜率用来步进到区间的中间,函数在这里求值。这个斜率是通过区间的3/4阶跃得到的第三个斜率。然后使用这三个值执行步骤。yn + 1是这三个函数值的线性组合。然后对函数求值,在区间结束时得到第四个斜率。然后,用这四个斜率来估计误差。
这里的误差估计是yn + 1和另一个解的估计之间的差值这个解是用二阶方法得到的我们实际上并没有求值。我们只需要这个方法和yn + 1之间的差值来估计误差。
这个估计的误差与用户提供的误差进行比较。如果估计的误差小于一个公差,那么这个步骤就成功了。第四个斜率,s4,变成了下一步的s1。
如果答案是比公差越大,则误差可能是调整步长的基础。在任一情况下,误差估计是用于调整步长大小用于下一步骤的基础。这是Bogacki-Shampine 3阶方法(2)这对ODE 23的基础。
让我们看一些非常简单的ODE23的用途只是开始。我要带差分方程y主要是等于y。所以我要计算e到T。并调用ODE23上的间隔从0到1,用初始值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。然后令y = 15。9。如果我把它设为16,也就是1 / a ^ 2,我就会遇到奇点。现在微分方程是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的评估。这可以用来画图形解决方案的,平滑的图形解决方案,找到解决方案的0,事件处理,等等。ODE23提供的另一个特性。