五种欧拉法求解一阶常微分方程(MATLAB)

1. 欧拉法
由拉格郎日中值定理,在区间内必定存在
,使得:
所以。如果知道
,代入这个递推公式,那么递推过程得到的序列
,没有误差。但求
往往很困难,常用一个易求的值近似地代替
。显式欧拉法、隐式欧拉法、梯形公式法、中点欧拉方法的区别是对
和
的近似方法不同。
(1)显式欧拉法
显式欧拉法把近似为区间
的起点,即
显式欧拉法是单步法,每一轮递推只用到前面一轮递推的结果。欧拉公式具有明显的几何意义,就是用折线近似代替方程的解曲线,因而常称为欧拉折线法。由泰勒展开式可知显式欧拉法具有1阶精度。
显式欧拉法在步长过大时误差较大;在步长较小时需要多步递推,可能出现误差累积的现象。由于显式欧拉法的精度不高,因此在实际应用中用的较少。
(2)隐式欧拉法
隐式欧拉法把近似为区间
的终点,即
隐式欧拉法是隐式方法,递推公式的右端包含未知量,故隐式欧拉法需要求解方程,得出
。
为避免求解方程,常用显式欧拉法的计算结果作为迭代的初值,把隐式欧拉法的递推公式作为迭代公式反复迭代,得到迭代序列
。如果步长
足够小,那么迭代序列收敛于
。
隐式欧拉法具有1阶精度。
(3)梯形公式法
梯形公式法把近似为区间
的起点和终点导数的平均值。递推公式为:
显然,梯形公式法是隐式方法,需要求解方程。为避免解方程,常用显式欧拉法的计算结果作为迭代的初值,把梯形公式法的递推公式作为迭代公式反复迭代,得到迭代序列
。如果步长
足够小,那么迭代序列收敛于
。
梯形公式法具有2阶精度。
(4)中点欧拉法
中点欧拉法把近似为区间
的中点
,即
中点欧拉方法是双步法,需要2个初值和
才能启动递推过程。一般先用单步法由点
计算出
,再用中点欧拉方法反复地递推。
中点欧拉方法具有2阶精度。
(5)改进的欧拉法
改进的欧拉法是一种预测—校正方法,它的每一轮递推包括预测和校正这2个步骤:
(1)先用显式欧拉公式计算出,
,即预测;
(2)再用梯形公式迭代一次,即校正。
改进的欧拉法精度比显式欧拉法高,不需要解方程,是一种更实用的方法。
2. 欧拉法MATLAB算法实现
如下算法实现五种形式的欧拉法,根据用户选择ode_method的方法,采用不同的欧拉法求解。
3. 欧拉法算法测试
例1:采用五种欧拉法求解一阶微分方程,已知解析解为。
测试代码如下:
测试结果:输出参数为结构体,如显式欧拉法的输出结果:
可视化图像如图1和图2所示,可见较小的步长可获得较高的精度,但注意计算时的舍入误差和误差累积。

