常微分方程的解法 (二): 欧拉(Euler)方法

        上一节讲了 常微分方程的三种离散化 方法:差商近似导数、数值积分、Taylor 多项式近似


目录

  §2 欧拉(Euler)方法

 2.1 向前 Euler 公式、向后 Euler 公式                  2.2 Euler 方法的误差估计

§3 改进的 Euler 方法

3.1 梯形公式               3.2 改进 Euler 法



  §2 欧拉(Euler)方法

 2.1 向前 Euler 公式、向后 Euler 公式

Euler 方法就是用差分方程初值问题(3)的解来近似微分方程初值问题(1)的解, 即由公式(3)依次算出 \large y\left ( x_{n} \right ) 的近似值  \large y_{}n \:\: ,\left ( n=1,2,....\right ) 。这组公式求问题(1)的数值 解称为向前 Euler 公式。

2.2 Euler 方法的误差估计

对于向前 Euler 公式(3)我们看到,当n = 1,2,....时公式右端的 \large y_{n} 都是近似的, 所以用它计算的 \large y_{n+1}会有累积误差,分析累积误差比较复杂,这里先讨论比较简单的 所谓局部截断误差。

显然 p 越大,方法的精度越高。式(9)说明,向前 Euler 方法是一阶方法,因此 它的精度不高。

§3 改进的 Euler 方法

3.1 梯形公式

利用数值积分方法将微分方程离散化时,若用梯形公式计算式(4)中之右端积分, 即

这就是求解初值问题(1)的梯形公式。

直观上容易看出,用梯形公式计算数值积分要比矩形公式好。梯形公式为二阶方法。 梯形公式也是隐式格式,一般需用迭代法求解,迭代公式为

如果实际计算时精度要求不太高,用公式(10)求解时,每步可以只迭代一次,由此导 出一种新的方法—改进 Euler 法。

3.2 改进 Euler 法

按式(5)计算问题(1)的数值解时,如果每步只迭代一次,相当于将 Euler 公式 与梯形公式结合使用:先用 Euler 公式求 \large y_{n+1} 的一个初步近似值 \large \bar{y}_{n+1} ,称为预测值,然 后用梯形公式校正求得近似值 \large y_{n+1} ,即

式(11)称为由 Euler 公式和梯形公式得到的预测—校正系统,也叫改进 Euler 法

为便于编制程序上机,式(11)常改写成

改进 Euler 法是二阶方法。


常微分方程的解法求解系列博文

常微分方程的解法 (一): 常微分方程的离散化 :差商近似导数、数值积分方法、Taylor 多项式近似

常微分方程的解法 (二): 欧拉(Euler)方法

常微分方程的解法 (三): 龙格—库塔(Runge—Kutta)方法 、线性多步法

常微分方程的解法 (四): Matlab 解法


 

很抱歉,您提供的引用内容中并没有关于常微分方程偏微分欧拉matlab的信息。但是,我可以为您介绍一下常微分方程欧拉法和Matlab的相关内容。 欧拉法是一种常微分方程数值解法,它是一种基本的显式数值积分方法,可以用于求解一阶常微分方程欧拉法的基本思想是将微分方程转化为差分方程,然后通过迭代求解差分方程来逼近微分方程的解。欧拉法的优点是简单易懂,容易实现,但是精度较低,容易积累误差。 Matlab是一种数学软件,它可以用于求解常微分方程。Matlab提供了许多内置函数和工具箱,可以方便地求解常微分方程。其中,ode45函数是Matlab中最常用的求解常微分方程的函数之一,它可以求解一阶和常微分方程。 如果您需要使用欧拉法求解常微分方程,可以参考以下Matlab代码: ```matlab % 定义常微分方程 f = @(t, y) y - t^2 + 1; % 定义初始条件 t0 = 0; y0 = 0.5; % 定义步长和终止时间 h = 0.1; tf = 2; % 使用欧拉法求解常微分方程 t = t0:h:tf; y = zeros(size(t)); y(1) = y0; for i = 1:length(t)-1 y(i+1) = y(i) + h*f(t(i), y(i)); end % 绘制图像 plot(t, y); xlabel('t'); ylabel('y'); title('Euler Method');``` 如果您需要使用Matlab求解常微分方程,可以参考以下Matlab代码: ```matlab % 定义常微分方程 f = @(t, y) y - t^2 + 1; % 定义初始条件 tspan = [0, 2]; y0 = 0.5; % 使用ode45函数求解常微分方程 [t, y] = ode45(f, tspan, y0); % 绘制图像 plot(t, y); xlabel('t'); ylabel('y'); title('ode45 Method'); ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值