pde+1.2Euler方法(欧拉方法)
Euler方法(欧拉方法)详细讲解与推导证明
一、背景与求解目标
我们要解决的是一阶常微分方程初值问题(IVP),标准形式为:
其中\(f(x,y)\)是已知函数,\(y(a)=y_0\)是初值条件。我们的目标是:求精确解\(y(x)\)在离散节点\(x_m = a + mh\)(\(h\)为步长,\(m=0,1,\dots,N\),\(x_N = b\))处的近似值\(y_m\),Euler方法是最基础、最经典的数值解法。
二、Euler方法的推导与几何意义
2.1 核心公式的推导
我们从两个等价的角度推导Euler递推公式:
角度1:导数的差商近似
根据导数的定义,函数在\(x_m\)处的导数为:
当步长\(h\)足够小时,向前差商可以近似代替导数,即:
整理后得到近似关系:
我们用\(y_m\)表示\(y(x_m)\)的近似值,代入后得到递推公式:
这就是显式Euler方法(向前Euler方法)的核心公式。
角度2:微分方程的积分形式+左矩形积分
对微分方程\(y'(x)=f(x,y(x))\)在区间\([x_m, x_{m+1}]\)上积分,得到精确等式:
数值积分的左矩形公式为:\(\int_a^b g(s)ds \approx (b-a)g(a)\),即用区间左端点的函数值乘以区间长度近似积分。
对上述积分项使用左矩形公式,得到:
代入积分等式,即可得到和上述完全一致的Euler递推公式。
2.2 几何意义
微分方程\(y'=f(x,y)\)的解,是\((x,y)\)平面上的一族积分曲线:每一条积分曲线上任意一点\((x,y)\)的切线斜率,都等于\(f(x,y)\);而初值问题的解,就是过点\((x_0,y_0)\)的那一条唯一的积分曲线\(y=y(x)\)。
Euler方法的几何本质,是用折线近似代替积分曲线,因此也叫欧拉折线法,具体过程为:
- 在起点\((x_0,y_0)\),作积分曲线\(y=y(x)\)的切线,切线斜率为\(f(x_0,y_0)\),切线方程为\(y = y_0 + f(x_0,y_0)(x-x_0)\);
- 取\(x=x_1=x_0+h\),切线上的点的纵坐标为\(y_1 = y_0 + h f(x_0,y_0)\),用\(y_1\)作为\(y(x_1)\)的近似值;
- 重复上述过程:在点\((x_m,y_m)\)作过该点的积分曲线的切线,用切线在\(x_{m+1}\)处的纵坐标\(y_{m+1}\)作为\(y(x_{m+1})\)的近似;
- 最终得到一条折线\((x_0,y_0) \to (x_1,y_1) \to \dots \to (x_N,y_N)\),这条折线就是Euler方法得到的近似解。
三、Euler方法的误差分析与严格证明
误差分析是数值方法的核心,我们分为局部截断误差和整体截断误差两部分讲解,明确两者的区别与联系。
3.1 核心概念定义
- 精确解:\(y(x_m)\)是初值问题在\(x_m\)处的精确值,满足微分方程和初值条件;
- 数值解:\(y_m\)是Euler方法递推得到的近似值,满足Euler递推公式;
- 局部截断误差(LTE):假设前一步数值解完全精确(\(y_m = y(x_m)\)),仅单步计算产生的误差,即\(R_m = y(x_{m+1}) - \left[ y(x_m) + h f(x_m, y(x_m)) \right]\);
- 整体截断误差(GTE):数值解与精确解的总误差,即\(\varepsilon_m = y(x_m) - y_m\),是每一步局部误差累积的结果。
3.2 局部截断误差的界(引理1.2.1)与证明
引理内容
设\(f(x,y)\)关于\(x\)和\(y\)均满足Lipschitz条件:
- 对\(x\)的Lipschitz条件:存在常数\(K>0\),对任意\(x_1,x_2 \in [a,b]\)、任意\(y\),有\(|f(x_1,y) - f(x_2,y)| \leq K |x_1 - x_2|\);
- 对\(y\)的Lipschitz条件:存在常数\(L>0\),对任意\(x \in [a,b]\)、任意\(y_1,y_2\),有\(|f(x,y_1) - f(x,y_2)| \leq L |y_1 - y_2|\)。
记\(M = \max_{a \leq x \leq b} |y'(x)| = \max_{a \leq x \leq b} |f(x,y(x))|\),则Euler方法的局部截断误差满足:
即局部截断误差为\(\boldsymbol{O(h^2)}\)(与步长\(h\)的平方同阶)。
详细证明
从局部截断误差的定义出发:
步骤1:拆分被积函数,适配Lipschitz条件
对被积函数做“加一项减一项”的变形,分离\(x\)和\(y\)的变化:
步骤2:利用积分不等式与三角不等式放缩
根据积分的绝对值不等式\(|\int_a^b g(s)ds| \leq \int_a^b |g(s)|ds\),以及三角不等式\(|A+B| \leq |A| + |B|\),得到:
步骤3:分别处理两个积分项
-
第一个积分项:使用\(f\)对\(x\)的Lipschitz条件
\(|f(s,y(s)) - f(x_m, y(s))| \leq K |s - x_m|\),代入得:\[\int_{x_m}^{x_{m+1}} |f(s,y(s)) - f(x_m, y(s))| ds \leq K \int_{x_m}^{x_{m+1}} (s - x_m) ds \]计算积分:\(\int_{x_m}^{x_m+h} (s - x_m) ds = \left. \frac{(s-x_m)^2}{2} \right|_{x_m}^{x_m+h} = \frac{h^2}{2}\),因此第一项结果为\(\frac{K h^2}{2}\)。
-
第二个积分项:使用\(f\)对\(y\)的Lipschitz条件
\(|f(x_m, y(s)) - f(x_m, y(x_m))| \leq L |y(s) - y(x_m)|\),代入得:\[\int_{x_m}^{x_{m+1}} |f(x_m, y(s)) - f(x_m, y(x_m))| ds \leq L \int_{x_m}^{x_{m+1}} |y(s) - y(x_m)| ds \]对\(|y(s) - y(x_m)|\)使用微分中值定理:存在\(\xi \in (x_m, s)\),使得\(y(s) - y(x_m) = y'(\xi)(s - x_m)\),因此\(|y(s) - y(x_m)| \leq M |s - x_m|\)。
代入积分得:\[L \int_{x_m}^{x_{m+1}} |y(s) - y(x_m)| ds \leq L M \int_{x_m}^{x_{m+1}} (s - x_m) ds = \frac{L M h^2}{2} \]
步骤4:合并结果
将两个积分项的结果相加,得到:
引理得证。
3.3 整体截断误差的界(定理1.2.2)与证明
定理内容
若\(f(x,y)\)关于\(x\)和\(y\)均满足Lipschitz条件,\(K、L\)为对应的Lipschitz常数,且\(h \to 0\)时\(y_0 \to y(x_0)\),则Euler方法的数值解\(\{y_m\}\)一致收敛于初值问题的精确解,且整体截断误差满足:
其中\(\varepsilon_0 = y(x_0) - y_0\)为初值误差。
若初值精确(\(y_0 = y(x_0)\),即\(\varepsilon_0=0\)),则\(\boldsymbol{|\varepsilon_m| = O(h)}\),即整体截断误差为一阶,比局部截断误差低一阶。
详细证明
步骤1:推导误差的递推关系
精确解满足带局部截断误差的等式:
Euler数值解满足:
两式相减,代入\(\varepsilon_m = y(x_m) - y_m\),得到误差递推式:
步骤2:对递推式取绝对值并放缩
两边取绝对值,结合三角不等式与\(f\)对\(y\)的Lipschitz条件:
代入局部截断误差的上界\(|R_m| \leq R = \frac{h^2}{2}(K + L M)\),得到:
步骤3:迭代展开递推不等式
对上述不等式反复迭代,得到一般项的上界:
步骤4:等比数列求和与放缩
右侧求和项是首项为1、公比为\((1+hL)\)的等比数列,求和得:
代入后得到:
利用不等式\(1 + x \leq e^x\)(\(x \geq 0\)),令\(x=hL\),得\(1 + hL \leq e^{hL}\),因此\((1 + hL)^k \leq e^{k h L}\)。
又因为\(x_k = a + kh \leq b\),即\(kh \leq b-a\),因此\(e^{k h L} \leq e^{L(b-a)}\)。
步骤5:代入R的表达式,得到最终上界
将\(R = \frac{h^2}{2}(K + L M)\)代入\(\frac{R}{hL}\),得:
结合\((1 + hL)^k \leq e^{L(b-a)}\),最终得到:
当初值精确时,\(\varepsilon_0=0\),此时\(|\varepsilon_k| \leq C \cdot h\)(\(C\)为与\(h\)无关的常数),即\(|\varepsilon_m| = O(h)\),定理得证。
四、Euler方法核心知识点总结
| 分类 | 详细内容 |
|---|---|
| 求解目标 | 一阶常微分方程初值问题 \(\begin{cases} y'(x) = f(x,y(x)), & x \in [a,b] \\ y(a) = y_0 \end{cases}\) |
| 核心递推公式 | 显式Euler方法:\(y_{m+1} = y_m + h f(x_m, y_m)\),其中\(x_m = a + mh\),\(h\)为步长,\(m=0,1,\dots,N-1\) |
| 几何意义 | 用折线近似代替积分曲线:在每个节点作积分曲线的切线,用切线外推下一个节点的近似值,最终得到的折线即为数值解,也叫欧拉折线法 |
| 推导来源 | 1. 向前差商近似代替导数;2. 微分方程积分形式+左矩形数值积分公式 |
| 局部截断误差 | 定义:单步计算的误差(前一步数值解精确),\(R_m = y(x_{m+1}) - [y(x_m) + h f(x_m,y(x_m))]\) 误差阶:\(O(h^2)\) 上界:$ |
| 整体截断误差 | 定义:数值解与精确解的总误差,\(\varepsilon_m = y(x_m) - y_m\) 误差阶:初值精确时为\(O(h)\)(一阶收敛) 上界:$ |
| 收敛性 | 当\(f(x,y)\)对\(x、y\)满足Lipschitz条件,且\(h \to 0\)时,数值解一致收敛于初值问题的精确解 |
| 方法特点 | 1. 显式方法,计算简单,无需迭代解方程,编程实现便捷; 2. 一阶收敛,精度较低,适合低精度场景或作为高阶方法的基础; 3. 条件稳定,对步长\(h\)有稳定性限制 |
Euler方法的稳定性与改进Euler方法详细讲解
承接前文对Euler方法基本原理、几何意义与误差分析的讲解,本节将深入讲解Euler方法的稳定性判定,以及为提升精度提出的改进Euler方法,包含完整的定义解读、定理证明、公式推导与收敛性分析。
一、Euler方法的稳定性
1.1 稳定性的定义与核心意义
数值方法的稳定性,是衡量方法是否可实用的核心前提。在实际计算中,初始值不可避免存在测量误差、舍入误差,每一步计算也会引入数值误差,稳定性研究的就是:初始误差是否会随着计算步数的增加而无限放大。若误差可控,则方法稳定;若误差爆炸式增长,方法无实用价值。
定义1.2.1(Euler方法的稳定性)
称显式Euler方法是稳定的,如果存在常数\(C\)和\(h_0\),使得Euler方法的两组解\(y_m\)和\(z_m\)满足:
其中\(y_m\)、\(z_m\)是Euler方法分别以\(y_0\)、\(z_0\)为初始值得到的数值解。
定义解读
- 核心要求:初值的小误差,不会在计算过程中被无限放大,误差始终被初值误差的一个固定常数倍控制;
- 本质:数值解连续依赖于初始值,这类稳定性也称为零稳定性(步长\(h \to 0\)时的稳定性),是数值方法的基本要求。
1.2 稳定性定理与详细证明
定理1.2.3
在定理1.2.2的假设条件下(即\(f(x,y)\)关于\(x\)和\(y\)均满足Lipschitz条件,\(L\)为\(f\)关于\(y\)的Lipschitz常数),显式Euler方法是稳定的。
完整证明过程
-
写出两组解的递推关系
对初值\(y_0\),Euler递推式为:\(y_{m+1} = y_m + h f(x_m, y_m)\)
对初值\(z_0\),Euler递推式为:\(z_{m+1} = z_m + h f(x_m, z_m)\) -
定义误差并推导误差递推式
记两组解的误差为\(e_m = y_m - z_m\),将两个递推式相减,得到误差的递推关系:\[e_{m+1} = e_m + h \left[ f(x_m, y_m) - f(x_m, z_m) \right] \] -
利用三角不等式与Lipschitz条件放缩
对等式两边取绝对值,结合三角不等式\(|A+B| \leq |A|+|B|\),得:\[|e_{m+1}| \leq |e_m| + h \left| f(x_m, y_m) - f(x_m, z_m) \right| \]根据\(f\)对\(y\)的Lipschitz条件:\(|f(x_m, y_m) - f(x_m, z_m)| \leq L |y_m - z_m| = L |e_m|\),代入后得到:
\[|e_{m+1}| \leq |e_m| + hL |e_m| = (1 + hL) |e_m| \] -
迭代展开得到误差上界
对上述递推不等式反复迭代,得到任意步数\(m\)的误差上界:\[\begin{align*} |e_m| &\leq (1 + hL) |e_{m-1}| \\ &\leq (1 + hL)^2 |e_{m-2}| \\ &\quad \vdots \\ &\leq (1 + hL)^m |e_0| \end{align*} \]其中\(e_0 = y_0 - z_0\),为初始值误差。
-
对指数项做全局放缩
求解区间为\([a,b]\),因此节点\(x_m = a + mh \leq b\),即\(mh \leq b-a\)。
利用基本不等式:对任意\(x \geq 0\),有\(1+x \leq e^x\)(可通过函数\(g(x)=e^x-x-1\)的单调性证明,\(x\geq0\)时\(g(x)\geq0\)恒成立)。
令\(x=hL\),得\(1+hL \leq e^{hL}\),因此:\[(1 + hL)^m \leq (e^{hL})^m = e^{mhL} \leq e^{L(b-a)} \] -
最终结论
代入误差上界,得到:\[|e_m| \leq e^{L(b-a)} |e_0| \]对照稳定性定义,取常数\(C = e^{L(b-a)}\)(与\(h\)、\(m\)无关的固定常数),\(h_0\)可取任意正数,对任意\(0<h<h_0\),均满足\(|e_m| \leq C|e_0|\),完全符合稳定性定义。因此显式Euler方法是稳定的。
二、改进的Euler方法(梯形公式)
2.1 方法的提出背景
显式Euler方法形式简单、易于实现,但存在核心缺陷:整体截断误差为\(O(h)\),仅为一阶精度。
在实际计算中,若要求误差达到\(10^{-6}\),需取步长\(h \approx 10^{-6}\),在区间\([0,1]\)上需计算100万步,计算量极大、效率极低。
回顾Euler方法的推导,其低精度来源于用一阶精度的左矩形积分公式近似微分方程的积分项。因此自然的改进思路是:用更高阶的数值积分公式替代左矩形公式,从而得到精度更高的解法,梯形积分公式为二阶精度,由此推导出改进的Euler方法。
2.2 改进Euler方法的公式推导
我们从一阶常微分方程的积分形式出发(所有线性多步方法的核心基础),对微分方程\(y'(x)=f(x,y(x))\)在区间\([x_m, x_{m+1}]\)上积分,得到精确等式:
-
采用梯形数值积分公式近似积分项:对任意可积函数\(g(s)\),有
\[\int_a^b g(s) ds \approx \frac{b-a}{2} \left[ g(a) + g(b) \right] \]区间长度\(b-a=h\),因此积分项可近似为:
\[\int_{x_m}^{x_{m+1}} f(s, y(s)) ds \approx \frac{h}{2} \left[ f(x_m, y(x_m)) + f(x_{m+1}, y(x_{m+1})) \right] \] -
舍去截断误差,用数值解\(y_m\)代替精确解\(y(x_m)\),\(y_{m+1}\)代替\(y(x_{m+1})\),得到改进的Euler方法核心公式:
\[\boldsymbol{y_{m+1} = y_m + \frac{h}{2} \left[ f(x_m, y_m) + f(x_{m+1}, y_{m+1}) \right]} \]该公式也称为梯形公式。
2.3 截断误差与精度分析
局部截断误差定义
梯形公式的局部截断误差\(R_m^{(1)}\)定义为:当\(y_m = y(x_m)\)时,精确解与梯形公式计算值的差,即
误差阶推导与结论
当\(y(x)\)三阶导数连续(足够光滑)时,对\(y'(s)\)做泰勒展开并积分计算,可得到:
核心精度结论:
- 梯形公式的局部截断误差为\(O(h^3)\),比显式Euler方法的\(O(h^2)\)高一阶;
- 对应的整体截断误差为\(O(h^2)\),是二阶精度的数值方法,在相同误差要求下,可采用更大的步长,计算量显著降低。
2.4 隐式格式的迭代求解
梯形公式与显式Euler方法的核心区别在于格式类型:
- 显式Euler:等式右侧仅含已知量\(y_m\),可直接计算\(y_{m+1}\),为显式格式;
- 梯形公式:等式右侧含未知量\(y_{m+1}\),无法直接求解,为隐式格式。
当\(f(x,y)\)是\(y\)的非线性函数时,梯形公式是关于\(y_{m+1}\)的非线性方程,需通过迭代法求解,迭代格式如下:
- 预测步(初始迭代值):用显式Euler方法计算初始预测值,作为迭代的起点\[y_{m+1}^{(0)} = y_m + h f(x_m, y_m) \]
- 校正步(迭代更新):将上一次迭代结果代入梯形公式右端,更新迭代值\[y_{m+1}^{(\nu+1)} = y_m + \frac{h}{2} \left[ f(x_m, y_m) + f(x_{m+1}, y_{m+1}^{(\nu)}) \right], \quad \nu=0,1,2,\dots \]
- 终止条件:当两次迭代结果的差值小于预设精度阈值\(\varepsilon\),即\(|y_{m+1}^{(\nu+1)} - y_{m+1}^{(\nu)}| < \varepsilon\)时,停止迭代,取\(y_{m+1} = y_{m+1}^{(\nu+1)}\)。
2.5 迭代收敛性证明
我们通过压缩映射原理(不动点定理)证明迭代格式的收敛性。
定理
若\(f(x,y)\)关于\(y\)满足Lipschitz条件,且步长\(h\)满足\(hL < 2\),则上述迭代格式收敛。
完整证明
-
定义迭代函数:
\[G(y) = y_m + \frac{h}{2} \left[ f(x_m, y_m) + f(x_{m+1}, y) \right] \]迭代格式可写为\(y_{m+1}^{(\nu+1)} = G(y_{m+1}^{(\nu)})\),迭代收敛的本质是\(G(y)\)存在唯一不动点\(y_{m+1}=G(y_{m+1})\),且迭代序列收敛到该不动点。
-
压缩映射判定:
若\(G(y)\)是压缩映射,即存在常数\(0 \leq \alpha < 1\),对任意\(y,z\),有\(|G(y)-G(z)| \leq \alpha |y-z|\),则迭代收敛。 -
放缩证明压缩性:
\[|G(y) - G(z)| = \left| \frac{h}{2} \left[ f(x_{m+1}, y) - f(x_{m+1}, z) \right] \right| \]结合\(f\)对\(y\)的Lipschitz条件\(|f(x_{m+1},y)-f(x_{m+1},z)| \leq L|y-z|\),代入得:
\[|G(y) - G(z)| \leq \frac{hL}{2} |y-z| \] -
收敛条件:
当\(\frac{hL}{2} < 1\),即\(\boldsymbol{hL < 2}\)时,\(\alpha = \frac{hL}{2} < 1\),满足压缩映射条件,迭代格式收敛。
实际计算说明
工程计算中步长\(h\)通常取值很小,\(hL < 2\)的条件极易满足,迭代收敛速度极快,通常仅需2~3次迭代即可达到精度要求,计算效率优异。
三、显式Euler方法与改进Euler方法核心特性总结
| 特性维度 | 显式Euler方法 | 改进Euler方法(梯形公式) |
|---|---|---|
| 核心递推公式 | \(y_{m+1} = y_m + h f(x_m, y_m)\) | \(y_{m+1} = y_m + \frac{h}{2} \left[ f(x_m, y_m) + f(x_{m+1}, y_{m+1}) \right]\) |
| 格式类型 | 显式格式,可直接计算 | 隐式格式,需迭代求解 |
| 局部截断误差 | \(O(h^2)\) | \(O(h^3)\) |
| 整体截断误差 | \(O(h)\) | \(O(h^2)\) |
| 收敛阶 | 一阶收敛 | 二阶收敛 |
| 稳定性 | 条件稳定,对步长\(h\)有严格限制 | 稳定性更优,A-稳定,步长限制极小 |
| 计算特点 | 单步仅需1次\(f\)的计算,编程简单,无迭代 | 单步需多次\(f\)的计算(由迭代次数决定),编程稍复杂 |
| 适用场景 | 低精度计算、教学演示、迭代初始值预测 | 中高精度工程计算、对精度有要求的常微分方程求解 |
posted on 2026-03-01 20:15 Indian_Mysore 阅读(1) 评论(0) 收藏 举报
浙公网安备 33010602011771号