# 一阶方程的初值问题
已知二元函数 f(x,y) 及函数 y(x) 在初值点 x0 的函数值 y0,求函数 y(x),使其满足
y′=f(x,y)−−①y(x0)=y0−−②
理论上说,只要 f(x,y) 适当光滑,例如:对于 y 满足 Lipschitz 条件
Lipschitz 条件:
存在 L≥0,对于任意的 y 和 yˉ,就有
∣f(x,y)−f(x,yˉ)∣≤L∣y−yˉ∣
可以保证满足上述初值的解 y=y(x) 存在并唯一
# 欧拉方法
# 显示欧拉法
在 xn 处的导数 y′(xn) 可以近似地表示成一阶向前差商 或者 对①式进行积分
可以将常微分方程初值问题式①②转换成:
{yn+1=yn+hf(xn,yn)y0=y(x0)n=0,1,2,...
几何意义:
# 隐式欧拉法
用向后差商 hy(xn+1)−y(xn) 替代 y′(xn+1)
于是可导出一个新的计算方法:
{yn+1=yn+hf(xn+1,yn+1)y0=y(x0)n=0,1,2,...
# 二步欧拉法
积分区间的宽度选为二步步长,即积分区间为 [xn−1,xn+1]
转换成:
{yn+1=yn−1+hf(xn,yn)y0=y(x0)n=0,1,2,...
转换过程
∫xn−1xn+1y′dx=y(xn+1)−y(xn−1)=∫xn−1xn+1f[x,y(x)]dx≈(xn+1−xn−1)f[x,y(x)]=2hf[x,y(x)]
# 梯形欧拉法
梯形公式欧拉法是显式欧拉法和隐式欧拉法的算术平均
{yn+1=yn+2h[f(xn,yn)+f(xn+1,yn+1)]y0=y(x0)n=0,1,2,...
# 改进的欧拉法
可以先用显式欧拉法求出 y(xn+1) 的一个粗略近似值 (预报值 yˉn+1), 然后用它代入梯形法公式的右端, 用梯形法计算 y(xn+1) 的较为精确的近似值(校正值 yn+1)
预报值:
yˉn+1=yn+hf(xn,yn)
校正值:
yn+1=yn+2h[f(xn,yn)+f(xn+1,yˉn+1)]
两种表示方式
-
嵌套形式
yn+1=yn+2h[f(xn,yn)+f(xn+1,yn+hf(xn,yn))]
-
平均形式
⎩⎪⎨⎪⎧yp=yn+hf(xn,yn)yc=yn+hf(xn,yp)yn+1=21(yp+yc)
也可以写成:
⎩⎪⎨⎪⎧yn+1=yn+2h(k1+k2)k1=f(xn,yn)k2=f(xn+1,yn+hk1)
几何意义:
用 y(x) 在 xn 和 xn+1 两个点的导数的近似值的算术平均替代在点 ξ 上的导数值
![]()
# 局部截断误差
# 定义
若假定在求 yn+1 的递推公式中等式右边的所有量为精确的(即在前一步 yn 准确的前提下),y(xn+1)−yn+1 称为此方法的局部截断误差
若局部截断误差为 O(hp+1),则此方法的精度为 p 阶
![]()
# 显式欧拉法的精度(一阶)
![]()
# 隐式欧拉法的精度(一阶)
![]()
# 二步欧拉法的精度(二阶)
![]()
# 梯形欧拉法的精度(二阶)
![]()
# 改进欧拉法的精度(二阶)
![]()
# 龙格 - 库塔法
龙格 - 库塔方法的基本思想:在 [xn,xn+1] 内多预报几个点的 ki 值, 并用其加权平均值作为 k∗ 的近似值从而构造出具有更高精度的计算公式
补充知识:二元泰勒展开
![]()
# 二阶龙格 - 库塔法
![]()
证明
# 常用的二阶龙格 - 库塔
![]()
# 单步法的收敛性与稳定性
# 收敛性
# 稳定性