数值分析Euler方法讲解
合集下载
第五章:常微分方程数值解法第一节欧拉法

eulersmethod11hyhfxyhfxy后退尤拉法梯形法eulersmethoddxdyanotherpointview对右端积分采用左矩形右矩形梯形积分公式即可得尤拉显式隐式梯形公式eulersmethod中点欧拉公式midpointformula假设则可以导出即中点公式也具有2来启动递推过程这样的算法称为双步法doublestepmethod而前面的三种算法都是单步法singlestepmethodeulersmethod几何解释后退尤拉法中点法dxdyanotherpointview对右端积分采用中矩形公式即得中点公式eulersmethod公式局部截断误差单步梯形公单步中点法分别用显式euler方法梯形方法和预估校正euler方法解初值问题dxdy1052119分别用显式euler方法梯形方法和预估校正euler方法解初值问题dxdy1052119euler方法梯形方法预估校正方法0010000000010000000010000000001100000048103100476275105100500016104021010000871031018594141041019025291040310290001210210406331910410412184010404105610014102107009622104107080048104051090490161021106278251041107076551040611314411710211485372710411494045910407117829718102119629529104119721062104081230467191021249019301041249975651040912874201910213062643110413072286610410134867819102136757331104136851466104数值例子表明梯形方法和预估校正euler方法比显式euler方法有更好的精度
1Euler法

x0 x1 x2 ... xn ...
x0 ih; h : 步长
(解的存在唯一性) Th9.1
对于初值问题 ( ),如果 f ( x, y ) 在下列区域内连续:
G {a x b;| y | }
且关于 y 满足Lipschitz条件,即存在常数 L 0,使
第九章 常微分方程初值问题的数值解法
/*Numerical Method of Initial Value Problem for Ordinary Differential Equations*/
本章主要介绍一阶常微分方程初值问题的数值解法。
§1 基本概念与Euler方法
一、初值问题及其数值解的概念
上述迭代法的收敛性:
( k 1) n 1
缺陷:计算量太大
h (k ) | yn1 y | | f ( xn1 , yn1 ) f ( xn1 , yn 1 ) | 2 h hL k 1 (k ) ( 0) L | yn1 yn1 | ... ( ) | yn1 yn1 | 2 2 2 ( k 1) 只要 h | yn1 yn1 | 0 ( k ) L
y( x ) 积分曲线
o
x0
x1
x2
xn
x
初值问题 ( ) 的解表示过点 ( x0 , y0 )的一条曲线 初值问题 ( ) 的数值解表示一组离散点列 ( xi , yi ) 可用拟合方法求该组数据 ( xi , yi ) 的近似曲线
二、Euler 法
y ( x , y ) 现在从 0 0 出发
解: yn1 Euler公式:
0.2 xn yn hf ( xn , yn ) 1.1 yn yn
Euler法与修正的Euler法局部截断误差Range-Kutta公式

h xn x0 0 n
16
定义 若一种数值方法对于固定的 xn ,x当0 nh h 时0 有 yn ,其y(中xn ) 是原问y题(x的) 确解,则称该方法 是收敛的.
定理 假设单步法具有p阶精度,且增量函数 (x, y关, h于) y 满足利普希茨条件
(x, y, h) (x, y, h) L y y ,
k1=f(xn,yn), k2=f(xn+0.5h, yn+0.5hk1) k3=f(xn+0.5h, yn+0.5hk2), k4=f(xn+h, yn+hk3)
12
例4
dy
y xy2 ,
0
x2
dx y(0) 1
1 y( x) x 1 2e x
数值实验:几种不同求数值解公式的误差比较
11
Range-Kutta公式
三阶Range-Kutta公式一般形式
yn+1= yn+ h[k1+4k2+k3]/6 k1=f(xn,yn), k2=f(xn+0.5h, yn+0.5hk1) k3=f(xn+h, yn – hk1+2hk2)
四阶Range-Kutta公式一般形式
yn+1= yn+ h[k1+2k2+2k3+k4]/6
常微分方程数值解
Euler法与修正的Euler法 局部截断误差 Range-Kutta公式
1
Euler法与修正的Euler法
一阶常微分方程初值问题:
dy dx
f (x, y), x
x0
其中, y = y(x) 是未知函数, y( x0 ) y0
初值问题的Euler方法和梯形法重点讲义资料

plot(x,y,x1,y1)
四.实验环境(所用软件、硬件等)及实验数据文件
Matlab
五.实验结果及实例分析
欧拉法输出分析:
H=0.2
计算值解析值误差
1.0000 1.0000 0
1.4000 1.4918 -0.0918
1.9600 2.2255 -0.2655
2.7440 3.3201 -0.5761
6.1159 6.6859 -0.57
计算值解析值误差
H=0.2
1.0000 1.0000 0
1.4800 1.4918 -0.0118
2.1680 2.2255 -0.0575
3.1504 3.3201 -0.1697
4.5488 4.9530 -0.4042
3.2727 3.3201 -0.0474
3.6089 3.6693 -0.0604
3.9793 4.0552 -0.0759
4.3871 4.4817 -0.0946
4.8362 4.9530 -0.1168
5.3307 5.4739 -0.1432
5.8752 6.0496 -0.1744
6.4748 6.6859 -0.2111
6.5342 7.3891 -0.8548
H=0.1
1.0000 1.0000 0
1.2200 1.2214 -0.0014
1.4860 1.4918 -0.0058
1.8074 1.8221 -0.0147
2.1955 2.2255 -0.0300
2.6639 2.7183 -0.0544
3.2289 3.3201 -0.0912
7.1349 7.3891 -0.2541
四.实验环境(所用软件、硬件等)及实验数据文件
Matlab
五.实验结果及实例分析
欧拉法输出分析:
H=0.2
计算值解析值误差
1.0000 1.0000 0
1.4000 1.4918 -0.0918
1.9600 2.2255 -0.2655
2.7440 3.3201 -0.5761
6.1159 6.6859 -0.57
计算值解析值误差
H=0.2
1.0000 1.0000 0
1.4800 1.4918 -0.0118
2.1680 2.2255 -0.0575
3.1504 3.3201 -0.1697
4.5488 4.9530 -0.4042
3.2727 3.3201 -0.0474
3.6089 3.6693 -0.0604
3.9793 4.0552 -0.0759
4.3871 4.4817 -0.0946
4.8362 4.9530 -0.1168
5.3307 5.4739 -0.1432
5.8752 6.0496 -0.1744
6.4748 6.6859 -0.2111
6.5342 7.3891 -0.8548
H=0.1
1.0000 1.0000 0
1.2200 1.2214 -0.0014
1.4860 1.4918 -0.0058
1.8074 1.8221 -0.0147
2.1955 2.2255 -0.0300
2.6639 2.7183 -0.0544
3.2289 3.3201 -0.0912
7.1349 7.3891 -0.2541
Euler 方法

| y( x ) y( xm ) | dx
Kh / 2 L
| y( xm ( x xm )) | ( x xm ) dx
( K LM )h2 / 2
其中: 0 1, M max | y( x ) | max | f ( x, y( x )) | 。
(*)
<< 第10页/共26页 >>
注意:对于Euler方法
h2 将 R M1代入()式得: 若 0 y0 y x0 0, 2
m 1
hM 1 L( b a ) e 1 2L
这里M 1 =( K LM ), 可记为 m O h ,
说明Euler方法的整体截断误差与h同阶。
欧拉方法的几何意义:
y X
y x2
yn
y0
y x1
y1
y2
x0
x1
x2
X
h步长
Euler方法的几何意义
<< 第4页/共26页 >>
xn
二、误差分析
Rm 称为局部截断误差,它表示当 ym y( xm )为
精确值时, 计算时 y( xm h) 的误差。
m y( xm ) ym , 记:
<< 第8页/共26页 >>
从而有:
| m 1 || m | hL | m | R,
对任一 m 0,1,
, N 1, 有:
| m | (1 hL) | m 1 | R
(1 hL)2 | m 2 | (1 hL) R R
(1 hL)m | 0 | R (1 hL) j
Euler法与改进Euler法知识讲解

yn1 yn dy h dx
常用方法
(2) 用数值积分近似积分
dy xn1
xn1
dx f ( x, y)dx (n 0,1, )
xn dx
xn
即
y( xn1) y( xn )
xn1 f ( x, y( x))dx
xn
进一步: 令 yn1 y( xn1) , yn y( xn )
xn x0 nh, n 0,1,2 .
二、建立数值解法的常用方法
建立微分方程数值解法,首先要将微分方程离散化.
一般采用以下几种方法: (1) 用差商近似导数
dy
y xn1 yxn
xn1 xn
f xn , y(xn )
dx x y , n n
进一步 : 令 yn1 y(xn1) , yn y(xn )
y0 ( x x0 ) f ( x0 , y0 )
dx x y , 0 0
几何意义
等步长为h,则 x1 x0 h,可由切线算出y1 : y1 y0 hf(x0 , y0)
逐步计算出y
y( x)
在
xn
点
1
的
值
:
yn1 yn hf(xn , yn) n 0,1,2,
注意:这是“折线法”而非“切线法” y 除第一个点是曲线切线外,其他点不是!
能用解析方法求出精确解的微分方程为数不多, 而且有的方程即使有解析解,也可能由于解的表达 式非常复杂而不易计算,因此有必要研究微分方程 的数值解法
常微分方程数值解法
重点 研究一阶常微分方程的初值问题的数值解
其一般形式为:
dy
dx
f (x, y)
y( x0 ) y0
a xb
计算方法 常微分方程初值问题数值解法-Euler公式-龙格-库塔法

yi1
1 2
(y p
yc)
i 0,1, 2 … , n 1
(9.12)
例9.2 用改进欧拉法解初值问题
y
y
2x y
y(0) 1
区间为0,1,取步长 h=0.1
解:
改进欧拉法公式
y p
yi
0.1(yi
2xi ) yi
课堂练习: x0 = 0, y0 = 1 计算出
欧拉公式的截断误差推导:
在欧拉公式中,假定 yi y(x i ) (近似地相等),则有
yi1 y(x i ) h[f(x i , y(x i ))] y(x i ) hy(xi ) (a)
而将真解y(x)在xi处按二阶泰勒展开,得
y(x i1 )
y(x i ) hy(xi )
h2 2!
y(x0 ) f(x 0 , y0 )
Pn
y
P1(x1 , y1)
P2(x2 , y2)
y=y(x)
Pi(xi , yi) Pi+1(xi+1 , yi+1) y(xn)
P0 y(x0) y(x1)
y(x2) y(xi)
y(xi+1)
x0 x1
x2 xi
xi+1
xn
直线 P0P1 的方程为: y y0 f(x 0 , y0 )(x x0 )
(9.5)式的右端含有未知的yi+1,它是一个关于yi+1的函 数方程,这类数值方法称为隐式方法。相反地,欧拉法 是显式方法。
Home
两步Euler公式
9.2.3 两步欧拉公式
2个区间
对方程 y f( x,y) 两端在区间 [xi1, xi1] 上积分得
9-1Euler方法

y n 1 y n hf ( x n , y n ) y 0 y (a )
差分方程初值问题
若用向后差商近似导数,即
y ( x n 1 ) y ( x n ) h y ( x n 1 ) y ( x n ) hf ( x n 1 , y ( x n 1 )) y ( x n 1 )
一阶常微分方程初值问题的数值解法
要计算出解函数 y(x) 在一系列节点 a = x0< x1<…< xn= b 处的近似值 yi y( xi ) ( i 1, ... , n)
节点间距 hi xi 1 xi (i 0, ... , n 1) 为步长,通常采用等距节点, 即取 hi = h (常数)。
y( x1 ) y( x 2 ) y( x0 ) 2h
y( x2 ) y( x0 ) 2h f ( x1 , y( x1 ))
yi 1 yi 1 2h f ( xi , yi ) i 1, ... , n 1
x0 x1 x2
假设 yi 1 y( xi 1 ), yi y( xi ) ,则可以导出 即中点公式具有 2 阶精度。
第九章 常微分方程数值解法
§1 Euler方法 §2 改进的Euler 方法
§3 Runge-Kutta方法
§4 线性多步法 §5 相容性、收敛性与稳定性
一阶常微分方程初值问题
考虑一阶常微分方程的初值问题
dy f ( x, y) dx y ( a ) y0 x [a , b ]
Rn 1 y ( xn ) y n h f ( xn , y ( xn )) f ( xn , yn )
Rn 1 en hL y ( xn ) yn Rn 1 (1 hL) en
差分方程初值问题
若用向后差商近似导数,即
y ( x n 1 ) y ( x n ) h y ( x n 1 ) y ( x n ) hf ( x n 1 , y ( x n 1 )) y ( x n 1 )
一阶常微分方程初值问题的数值解法
要计算出解函数 y(x) 在一系列节点 a = x0< x1<…< xn= b 处的近似值 yi y( xi ) ( i 1, ... , n)
节点间距 hi xi 1 xi (i 0, ... , n 1) 为步长,通常采用等距节点, 即取 hi = h (常数)。
y( x1 ) y( x 2 ) y( x0 ) 2h
y( x2 ) y( x0 ) 2h f ( x1 , y( x1 ))
yi 1 yi 1 2h f ( xi , yi ) i 1, ... , n 1
x0 x1 x2
假设 yi 1 y( xi 1 ), yi y( xi ) ,则可以导出 即中点公式具有 2 阶精度。
第九章 常微分方程数值解法
§1 Euler方法 §2 改进的Euler 方法
§3 Runge-Kutta方法
§4 线性多步法 §5 相容性、收敛性与稳定性
一阶常微分方程初值问题
考虑一阶常微分方程的初值问题
dy f ( x, y) dx y ( a ) y0 x [a , b ]
Rn 1 y ( xn ) y n h f ( xn , y ( xn )) f ( xn , yn )
Rn 1 en hL y ( xn ) yn Rn 1 (1 hL) en
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
此即为欧拉公式,又称 欧拉格式。
也称Euler 为单步法, 又称为显格式的单步法 。
依上述公式逐次计算可得:y1 , y2 ,? , yn
§2 Euler 方法 ? 2009, Henan Polytechnic University
55
第五章 常微分方程数值解法
2 欧拉法的几何意义:
( x2, y2 ) ( x1, y1 )
也称欧拉折线法 .
§2 Euler 方法 ? 2009, Henan Polytechnic University
66
第五章 常微分方程数值解法
3.欧拉法的局部截断误差: 定义 在假设 yi = y(xi),即第 i 步计算是精确的前 提下,考虑的截断误差 Ri = y(xi+1) ? yi+1 称为局部 截断误差
xk
? ( xk?1 ? xk ) f ( xk , y( xk )) ? hf ( xk , y( xk ))
即: y( xk ? 1 ) ? y( x k ) ? hf ( xk , y( x k ))
§2 Euler 方法 ? 2009, Henan Polytechnic University
22
第五章 常微分方程数值解法
方法二 数值微分法(用向前差商近似导数)
在点xk 处有y?( x k ) ? f ( xk , y( xk )) 利用数值微分公式
y?( xk ) ?
y( xk?1 ) ? h
y( xk )
得:y( xk ?1 ) ? y( x k ) ? hf ( x k , y( xk ))
第二节 Euler方法
1
第五章 常微分方程数值解法
5.2.1.Euler 方法
设节点为 xk=x0+kh (h=(b-a)/n k=0,1,…n)
方法一 泰勒展开法 (将y(x k+1)在xk泰勒展开得 )
y( xk?1) ?
y( xk ) ?
y?( x k )( x k ?1 ?
xk ) ?
y??(?
定义 若某算法的局部截断误差为 O(hp+1),则称该 算法有p 阶精度。
§2 Euler 方法 ? 2009, Henan Polytechnic University
77
第五章 常微分方程数值解法
欧拉法的局部截断误差:
Ri ? y( xi?1 ?( xi ) ?
过( x0 , y( x0 )) ? ( x0 , y0 )作切线
y ? y0 ? k ( x ? x0 )
斜率k ? y?( x 0 ) ? f ( x 0 , y( x0 )) ? f ( x0 , y0 ) x0
x1
x2
y ? 从y0 上? 述f (几x0何, y意0 )(义x ?上x得0 )与知x,?由x1求Eu交le点r法,所纵得坐的标折记线为 y1,
2
)
(
x
k
?1
?
xk )2
?
y( xk ) ?
hf
( xk , y( xk )) ?
h2 y??(? )
2
则可得:
y( xk?1) ? y( xk ) ? hf ( xk , y( xk )) k ? 0,1,2.....n
§2 Euler 方法 ? 2009, Henan Polytechnic University
§2 Euler 方法 ? 2009, Henan Polytechnic University
33
方法三 数值积分法
第五章 常微分方程数值解法
由y?( x ) ? f ( x , y( x )),两端同时[ xk , xk ?1]在积分可得:
? y( xk?1) ? y( xk ) ?
xk?1 f ( x, y( x ))dx
§2 Euler 方法 ? 2009, Henan Polytechnic University
99
第五章 常微分方程数值解法
? ? ?
yn0? y(k ?1)
n?1
1? ?
yn ? h yn ? h
f (xn f (xn?
, yn ) , y(k)
1 n?1
)
y ? ( k ? 1) n?1
yn?1
向后差商近似导数
y?( x k ? 1 ) ?
y(xk?1) ? h
y( xk )
y( xk?1 ) ? y( xk ) ? hf (xk?1, y( xk?1 ))
yk?1 ? yk ? hf ( xk?1, yk?1 ) k ? 0,1,2.....n ? 1
由于未知数 yn+1 同时出现在等式的两边,故称为 隐 式 欧拉公式,而前者称为 显式 欧拉公式。隐式公 式不能直接求解,一般需要用 Euler 显式公式得到 初值,然后用 Euler 隐式公式迭代求解。因此隐式 公式较显式公式计算复杂,但稳定性好。
?h
f
( xn?1 ,
y
( n
k ?
) 1
)
?
f (xn?1, yn?1)
? hL
y (k ) n?1
?
yn?1
?
? ? ?
hL
y ? y k ? 1 (0)
n?1
n?1
hL ? 1, ?
y ? ( k ? 1) n?1
yn?1(k ?
?)
在迭代公式中取极限,有
yn?1 ? yn ? h f (xn?1, yn?1)
h2 2
y??( xi ) ?
O(h3 )] ? [
yi
?
hf
(xi,
yi )]
?
h2 2
y??( x i ) ? O ( h 3 )
欧拉法具有 1 阶精度。
§2 Euler 方法 ? 2009, Henan Polytechnic University
88
第五章 常微分方程数值解法
5.2.2 后退的 欧拉公式 (隐式欧拉公式)
则y明1 ?显y偏0 ?离hf了(积x0 ,分y0曲) 过线(,x1可, y见1 )以此方f ( 法x1 ,
非常粗糙。 y1 )为斜率作直线,
y ? y1 ? f ( x1 , y1 )( x ? x1 )与x ? x 2求交点,纵坐标记为 y2,
则y2 ? y1 ? hf ( x1 , y1 )
.......... .......... ........
44
第五章 常微分方程数值解法
y( xk ? 1 ) ? y( x k ) ? hf ( x k , y( x k ))
用y( x k )的近似值 yk 代入上式右端,记所得 近似结果为 yk ? 1,则可得:
yk?1 ? yk ? hf ( x k , yk )
k ? 0,1,2.....n ? 1