从系列:在MATLAB中求解ode
克里夫硅藻土,MathWorks
ODE45通常是ODE求解器的选择函数。比较了四阶和五阶的方法来估计误差和确定步长。ODE45非常精确,它的默认行为是使用插值在中间点提供结果。
在MATLAB和Simulink中最常用的ODE求解器是ODE45。万博1manbetx它是基于英国数学家JR Dormand和PJ Prince在1980年发表的方法。基本的方法是5阶。误差校正采用相伴序四法。
tn的斜率,首先与成功的前一步的最后一项相同。在1/ 5h, 3/10h, 4/5h, 8/9h和tn + 1处,函数值还有5个斜率。这六个斜率,它们的线性组合,用来得到yn + 1。
函数在tn + 1和yn + 1处求值,得到第七个斜率。然后这些的线性组合被用来产生误差估计。
同样,如果误差估计小于指定的精度要求,这一步就是成功的。然后用这个误差估计得到下一步的步长。如果误差太大,这一步是不成功的,这个误差估计被用来得到步长,然后再做一次。
如果我们想看到实际使用的系数,可以进入ODE45的代码。这是一个系数表。或者你去维基百科上看休眠王子法也有相同的系数。
顺便提一下,这里有一个关于高阶龙格-库塔方法的有趣事实。经典的龙格-库塔需要每一步进行4次函数计算才能得到4阶。《沉睡王子》每一步需要六次功能评估才能得到第五指令。你不能只用5个函数求值就得到(5)然后,如果我们想要达到更高阶,每一步需要更多的函数计算。
让我们使用ODE45来计算e的t次幂。y '等于y。我们可以通过提供一个称为tspan的参数来要求输出。0和0.1到1的步骤。如果我们把它作为输入参数来解这个微分方程并得到这些点的输出,我们就会把它作为输出。这是微分方程在这些点处的近似解。
如果我们把它画出来,这就是这些点的解。为了看看它有多精确,我们看到我们实际上把结果变成了9位数。ODE45非常准确。
我们来看看在接近奇点的情况下,步长是1 / 4。Y0接近16。微分方程是y ' = 2(a-t) y²。我们让ODE45选择自己的步长,表示我们只想从0积分到1。我们获取t和y的输出并绘制它。
现在,这里有很多点,但这是误导,因为ODE45,默认情况下,使用的是细化选项。它实际上只是在每四个点处求函数值然后用插值来填充。所以我们需要一个不同的图。
这个图更好地显示了发生了什么。这些大点是ODE45用来计算微分方程的点。这些小点是用插值填充的。大点是每四个点。优化选项说这些大点之间的距离太远了我们需要用插值来填充它。这就是连续插值的作用。
大点更集中,因为我们必须绕着曲线走。然后,当我们离奇异点越远步长越大。由此可见,ODE45算法具有较高的精度和自动步长选择功能。
这是一个锻炼。比较ODE23和ODE45,分别计算pi。积分4 / (1 + t²)从0到1是。你可以把它表示成一个微分方程,用每一个例程对微分方程积分看看它们有多接近计算。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。