当前位置:
文档之家› 计算方法第七章常微分方程的数值解法
计算方法第七章常微分方程的数值解法
h
令 xi h, 0 1,据此可得
y(xi1) y(xi ) hf (xi h, y(xi h))
定义 K * f (xi h, y(xi h)) ,称为区间上的平均斜率,进而有
y(xi1) y(xi ) hK *
第三节 龙格-库塔方法
因此只要对 K*提供一种算法,就可以求得微分方程的数值解;现据此观点对 欧拉方法及改进的欧拉方法进行分析。 2、基于平均斜率对欧拉法和改进的欧拉法进行分析(重要) (1)在欧拉公式中,是选取点 xi上的切线斜率f(xi,yi) 作为平均斜率K*的近似, 已知精度较低。(一个点的切线斜率) (2)改进的欧拉公式:(两个点的切线斜率平均值)
yi y(xi ) (i 1, ... , n)
第一节 引言
➢节点间距,即步长为: hi xi1 xi (i 0, ... , n 1)
通常采用等距节点,即hi = h (常数)
➢等间距节点
记 xi a ih (i 0,1,2,...)
y(x)在点xi上的近似值 yi , y(xi ) yi
xi )
相应地有
h[ 2
f
(xi ,
y(xi ))
f
( xi 1 ,
y( xi 1 ))]
yi1
yi
1 h[ f 2
(xi ,
yi )
f
( xi 1 ,
yi 1 )]
经推导,应用梯形公式的局部截断误差具有二阶精度,优于欧拉方法。
(重要!)
第二节 欧拉方法及改进的欧拉方法
和欧拉公式相比较,梯形公式在计算yi+1时候也只用到前一步的值yi,但是若yi 已知,将yi带入公式求解,一般不能直接得到yi+1(公式两端都有yi+1),还需要 通过其他方法(比如迭代法)进行求解,所以梯形公式被称为隐式公式。
(i 0,1,2,...)
➢在这些节点上采用离散化方法(通常用数值积分、微分、泰勒展开等)将上述
初值问题化成关于离散变量的求解问题。把相应的解yi作为y(xi)的近似值, yi就是上述初值问题在节点xi上的数值解。
第二节 欧拉方法及改进的欧拉方法(重要)
一、欧拉方法
1、向前差商近似导数
y(x0 )
则可以得到算法的具体表达式:
yi1 K1
yi f(
h(1K1
xi , yi )
K
2
f (xi p , yi
2K2
phK1 )
)
1,
2
,
p为未知参数
如何求?
第三节 龙格-库塔方法
2、选择参数使得算法具有2阶精度 计算上面公式的局部截断误差:
第二节 欧拉方法及改进的欧拉方法
➢小结:求解微分方程的两个思路
– 差商近似,如欧拉方法
y ( xi 1 ) xi1
y(xi ) xi
y '(xi )
y ( xi 1 )
y(xi )
hy '(xi )
– 计算积分
y dy f (x, y)
dx
xi1 xi
f
(x,
y)dx
y(xi1)
y(xi )
此处迭代非常简单,应该会
第二节 欧拉方法及改进的欧拉方法
结果如下:
i
xi
yi
y(xi)
i = y(xi) - yi
0
0
1.0000
1.0000
0
1
0.02
0.9820
0.9825
0.0005
2
0.04
0.9650
0.9660
0.0005
3
0.06
0.9489
0.9503
0.0014
4
0.08
0.9336
yi1
yi
h 2
f (xi , yi ) f (xi1, yi1)
i 0,1, 2,...
这种预估校正方法称为改进的欧拉方法。
第二节 欧拉方法及改进的欧拉方法
为了便于编写程序,常将上面的公式改写为如下式:
y
p
yi
hf
(xi ,
yi )
yc yi hf (xi1, yp )
yi1
(yp
yc )
/
2
(用来编程的公式!重要!)
第二节 欧拉方法及改进的欧拉方法
4、举例(重要!) 在区间[0, 1.5]上,取h = 0.1,求解微分方程
y
dy dx
y 2x y
解:(1)用欧拉法计算公式如下:
y(0) 1
yi1
yi
h
yi
2xi yi
y0 1, h 0.1
(2)用改进欧拉法计算公式如下:
0.9354
0.0018
5
0.10
0.9192
0.923
0.0021
第二节 欧拉方法及改进的欧拉方法
3、欧拉方法的几何意义(重要)根及该据已点知处条曲件线,的曲导线数y(fx()x上0,的y0)点,(则x0,可y0) 以得到该点的切线方程
y
P1
P2
y y0 f (x0 , y0 )( x x0 )
yi1
yi
h
yi
2xi yi
yi1
yi
h 2
f (xi , yi ) f (xi1, yi1)
yi
h 2
yi
2 xi yi
yi1
2 xi 1 yi1
本题的精确解为
y(x) 1 2x ,
用来检验近似解 的精确程度。 计算结果如右表:
xi
欧拉法yi 改进欧拉法yi0 Nhomakorabea1
1
0.1
1.1
1.095909
y(xi1) y(xi ) hf (xi , y(xi ))
用矩形求积公式计算得出的结果与用欧拉方法完全相同。
不妨采用精度更高的求积方法
第二节 欧拉方法及改进的欧拉方法
2、用梯形公式
xi1 xi
f
(x,
y)dx
1[ 2
f
(xi ,
y(xi ))
f
( xi 1 ,
y( xi 1 ))] ( xi 1
第一节 引言
1、一阶常微分方程的初值问题
(看懂)
y dy f (x, y) x [a,b] dx
y(a) y0
假定上式在区间[a, b]上存在唯一且足够 光滑的解y(x)。
➢所谓数值解法就是求解y(x)在一系列离散点(也称为节点)的值
计算出解函数 y(x) 在一系列节点 a = x0< x1<…< xn= b 处的近似值
y(xi1) y(xi )
xi1 f (x, y)dx
xi
➢根据已知条件或当前结果,构造yi+1的某种计算形式
第三节 龙格-库塔方法
一、基本思想
1、平均斜率
考察差商
y(xi1) y(xi ) h
,由拉格朗日中值定理存在 (xi , xi1) 使得
y' ( ) y(xi1) y(xi ) f ( , y( ))
y(x1) h
y(x0 )
y
dy
f
(x,
y)
x [a,b]
dx
y(a) y0
y(x1) y0 h f (x0 , y0 ) 记为 y1
y2 y1 h f (x1, y1)
yi1 yi hf (xi , yi ) (i 0, ... , n 1)
此处推导非常简单,应该会
第二节 欧拉方法及改进的欧拉方法
yi1 yi hf (xi , yi ) yi hy'(xi )
上面两个公式相减得到:
Ri1
y(xi1)
yi1
h2 2
y"(i ) O(h2 )
具有1阶精度
原来欧拉方法就是泰勒一阶展开式的近似, 后面看做误差,信号处理中把误差看做噪声
第二节 欧拉方法及改进的欧拉方法
二、改进的欧拉方法(重要!)
f
(xi , yi )
f
( xi 1 ,
yi 1 )]
第三节 龙格-库塔方法
与改进的欧拉方法类似,取 K1 f (xi , yi )
如何得到xi+p的斜率?
根据改进的欧拉法,可以利用欧拉法预测 y( xi p ) 的值:
yi p yi phK1
则可以得到点xi+p斜率K2:
K2 f (xi p , yi p )
K* 的近似值的,而xi+1处的切线斜率由已知信息预测得到;精度高于欧拉方法。
第三节 龙格-库塔方法
根据上面的分析:如果在区间 [xi, xi+1]上多测几个点的斜率值,然后取其加权平
均作为平均斜率的近似值,有可能构造出精度更高的计算公式;此即龙格-库塔 方法的基本思想。(多几个点的斜率值平均)
二、二阶龙格-库塔方法
将微分方程在区间[xi, xi+1]上积分 (思路改变:常规欧拉方法思路是?)
y dy f (x, y)
dx
xi1 xi
f
(x,
y)dx
y(xi1)
y(xi )
y(xi1) y(xi )
xi1 f (x, y)dx
xi
由初值条件,可以借助于积分求各点的值 y(xi)。
1、应用矩形求积公式
3、改进的欧拉方法
梯形公式是隐式的,用迭代法求解计算量较大。实际中常将欧拉公式和梯形
公式联合使用,先用欧拉公式得一个y(xi+1)的近似值 yi1 ,称为预估值,然后对
预估值使用梯形公式对它进行调整,得到更为精确的近似值yi+1,称之为校正值。