用MATLAB求解ode, 6: ODE45
从系列中:用MATLAB求解ode
ODE45通常是ODE求解器中选择的函数。它比较了四阶和五阶的方法来估计误差和确定步长。ODE45非常精确,它的默认行为是使用它的插值函数在中间点提供结果。
在MATLAB和Simulink中最常用的ODE求解器是ODE45。它是基于英国数学家JR Dormand和PJ Prince在1980年发表的方法。基本方法是5阶。纠错使用一种伴序四的方法。
tn的斜率,首先和之前成功步骤剩下的斜率相同。然后从1/ 5h, 3/10h, 4/5h, 8/9h处的函数值还有5个斜率,然后是tn + 1处。这六个斜率,它们的线性组合,被用来得到yn + 1。
函数在tn + 1和yn + 1处求值得到第七个斜率。然后这些线性组合被用来产生误差估计。
同样,如果误差估计小于指定的精度要求,则步骤成功。然后误差估计被用来计算下一步的尺寸。如果误差太大,则步长不成功,并使用该误差估计来获得步长以重新执行步长。
如果我们想查看实际使用的系数,可以进入ODE45的代码。这里有一个系数表。或者你去维基百科的页面上找休眠王子法有相同的系数。
题外话,这里有一个关于高阶龙格-库塔方法的有趣事实。经典龙格-库塔法需要每步计算4次函数才能得到4阶。Dormand-Prince每一步需要6次函数求值才能得到阶5。你不能用5个函数求值得到o (5)然后,如果我们想要达到更高阶,每一步就需要更多的函数求值。
让我们用ODE45来计算e ^ t y '等于y。我们可以通过提供一个名为tspan的参数来要求输出。0和0.1到1的步长。如果我们提供它作为输入参数来解这个微分方程并得到这些点的输出,我们就得到它作为输出。这是微分方程解在这些点处的近似值。
如果我们画出来,这是这些点的解。为了看看它有多精确,我们可以看到我们实际上得到了9位数的结果。ODE45非常准确。
让我们看看近奇点问题的步长选择,是1 / 4。Y0接近于16。微分方程是y ' = 2(a-t) y²。通过表示只想从0到1积分,我们让ODE45选择自己的步长。我们捕获t和y的输出并绘制出来。
这里有很多点,但这是有误导性的,因为ODE45默认使用的是refine选项。它实际上只是在每4个点处求函数值然后用插值法在中间补上。我们需要一个不同的图。
这张图更好地展示了正在发生的事情。大的点是ODE45选择的用来计算微分方程的点。这些小点是用插值函数填充的。大点代表每四个点。细化选项说大点之间的距离太远我们需要用插值来填充它。这就是连续插值的作用。
当我们要绕着曲线走的时候,大点会更集中。然后,当我们离奇点越远步长越大。因此,这显示了ODE45的高精度和自动步长选择的作用。
这里有一个练习。比较ODE23和ODE45,分别使用它们计算pi。4 / (1 + t²)从0到1的积分是。你可以把它表示成一个微分方程,用每一个例程对微分方程积分看看它们离计算有多近。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。