第五章:常微分方程数值解法第一节欧拉法
第五章:常微分方程数值解法第一节欧拉法

常微分方程数值解法欧拉法

)
f ( xn1, yn1)
hL
y(k ) n 1
yn1
L
hL
k 1
y(0) n 1
yn1
Q
hL 1,
y (k 1) n 1
yn1 (k
)
在迭代公式中取极限,有
yn1 yn h f ( xn1, yn1 ) 因此yn(k1)的极限就是隐式方程的解
几何意义
y
设已知曲线上一点 Pn (xn , yn ),过该 点作弦线,斜率为(xn+1 , yn +1 ) 点的 方向场f(x,y)方向,若步长h充分小, 可用弦线和垂线x=xn+1的交点近似 曲线与垂线的交点。
式。隐式公式不能直接求解,一般需要用Euler显式公式
得到初值,然后用Euler隐式公式迭代求解。因此隐式公
式较显式公式计算复杂,但稳定性好
y0 n1
yn
h
y(k 1) n1
yn
h
f (xn , yn )
f
( xn1 ,
y(k) n1
)
收敛性
y (k 1) n 1
yn1
h
f
( xn1,
y(k ) n 1
如何求解
解析解法:(常微分方程理论)
只能求解极少一类常微分方程;实际中给定的问题不一 定是解析表达式,而是函数表,无法用解析解法。
数值解法: 求解所有的常微分方程
计算解函数 y(x) 在一系列节点 a = x0< x1<…< xn= b
处的近似值 yi y( xi ) (i 1, ... , n)
y(xn1) y(xn ) hy(xn ) y(xn ) yn
y(xn1) yn1 yn h f (xn , yn )
数值分析常微分方程的数值解法

《计算机数学基础》数值部分第五单元辅导14 常微分方程的数值解法一、重点内容 1. 欧拉公式:),...,,,(),()(1-210=⎩⎨⎧+=+=≈01+1+n k kh x x y x hf y y x y kk k k k k局部截断误差是O (h 2)。
2. 改进欧拉公式:预报-校正公式:⎪⎩⎪⎨⎧++=+=++++)],(),([2),(1111k k k k k k k k k k y x f y x f hy y y x hf y y 校正值预报值即 ))],(,(),([211k k k k k k k k y x hf y x f y x f hy y +++=++ 或表成平均的形式:⎪⎪⎪⎩⎪⎪⎪⎨⎧+21=+=+=1+1+)(),(),(c p k p k k c k k k p y y y y x hf y y y x hf y y改进欧拉法的局部截断误差是O (h 3)3. 龙格-库塔法二阶龙格-库塔法的局部截断误差是O (h 3) 三阶龙格-库塔法的局部截断误差是O (h 4) 四阶龙格−库塔法公式: )22(643211κκκκ++++=+hy y k k其中 κ1=f (x k ,y k );κ2=f (x n +12h ,y k +21h κ1);κ3=f (x k +12h ,y n +21h κ2);κ4=f (x k +h ,y k +h κ3)四阶龙格-库塔法的局部截断误差是O (h 5)。
二、实例例1 用欧拉法解初值问题⎩⎨⎧1=060≤≤0--='2)().(y x xy y y ,取步长h =0.2。
计算过程保留4位小数。
解h =0.2, f (x )=-y -xy 2。
首先建立欧拉迭代格式),,)((.),(210=-420=--=+=21+k y x y y hx hy y y x hf y y k k k kk k k k k k k当k =0,x 1=0.2时,已知x 0=0,y 0=1,有y (0.2)≈y 1=0.2×1(4-0×1)=0.8000当k =1,x 2=0.4时,已知x 1=0.2, y 1=0.8,有 y (0.4)≈y 2=0.2×0.8×(4-0.2×0.8)=0.614 4 当k =2,x 3=0.6时,已知x 2=0.4,y 2=0.6144,有 y (0.6)≈y 3=0.2×0.6144×(4-0.4×0.4613)=0.8000例2 用欧拉预报-校正公式求解初值问题⎩⎨⎧1=10=++'2)(sin y x y y y ,取步长h =0.2,计算y (0.2),y (0.4)的近似值,计算过程保留5位小数。
常微分方程的数值解法(欧拉法、改进欧拉法、泰勒方法和龙格库塔法)

[例1]用欧拉方法与改进的欧拉方法求初值问题h 的数值解。
在区间[0,1]上取0.1[解]欧拉方法的计算公式为x0=0;y0=1;x(1)=0.1;y(1)=y0+0.1*2*x0/(3*y0^2);for n=1:9x(n+1)=0.1*(n+1);y(n+1)=y(n)+0.1*2*x(n)/(3*y(n)^2);end;xy结果为x =Columns 1 through 80.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 Columns 9 through 100.9000 1.0000y =Columns 1 through 81.0000 1.0067 1.0198 1.0391 1.0638 1.0932 1.1267 1.1634 Columns 9 through 101.2028 1.2443改进的欧拉方法其计算公式为本题的精确解为()y x=x0=0;y0=1;ya(1)=y0+0.1*2*x0/(3*y0^2);y(1)=y0+0.05*(2*x0/(3*y0^2)+2*x0/(3*ya^2));for n=1:9x(n+1)=0.1*(n+1);ya(n+1)=ya(n)+0.1*2*x(n)/(3*ya(n)^2);y(n+1)=y(n)+0.05*(2*x(n)/(3*y(n)^2)+2*x(n+1)/(3*ya(n+1)^2));end;xy结果为x =Columns 1 through 80.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 Columns 9 through 100.9000 1.0000y =Columns 1 through 81.0000 1.0099 1.0261 1.0479 1.0748 1.1059 1.1407 1.1783 Columns 9 through 101.2183 1.2600[例2]用泰勒方法解x=0.1, 0.2, …, 1.0处的数值解,并与精确解进行比较。
常微分方程的数值解法

常微分方程的数值解法1. 引言常微分方程是自变量只有一个的微分方程,广泛应用于自然科学、工程技术和社会科学等领域。
由于常微分方程的解析解不易得到或难以求得,数值解法成为解决常微分方程问题的重要手段之一。
本文将介绍几种常用的常微分方程的数值解法。
2. 欧拉方法欧拉方法是最简单的一种数值解法,其具体步骤如下:- 将自变量的区间等分为n个子区间;- 在每个子区间上假设解函数为线性函数,即通过给定的初始条件在每个子区间上构造切线;- 使用切线的斜率(即导数)逼近每个子区间上的解函数,并将其作为下一个子区间的初始条件;- 重复上述过程直至达到所需的精度。
3. 改进的欧拉方法改进的欧拉方法是对欧拉方法的一种改进,主要思想是利用两个切线的斜率的平均值来逼近每个子区间上的解函数。
具体步骤如下: - 将自变量的区间等分为n个子区间;- 在每个子区间上构造两个切线,分别通过给定的初始条件和通过欧拉方法得到的下一个初始条件;- 取两个切线的斜率的平均值,将其作为该子区间上解函数的斜率,并计算下一个子区间的初始条件;- 重复上述过程直至达到所需的精度。
4. 二阶龙格-库塔方法二阶龙格-库塔方法是一种更为精确的数值解法,其基本思想是通过近似计算解函数在每个子区间上的平均斜率。
具体步骤如下: - 将自变量的区间等分为n个子区间;- 在每个子区间上计算解函数的斜率,并以该斜率的平均值近似表示该子区间上解函数的斜率;- 利用该斜率近似值计算下一个子区间的初始条件,并进一步逼近解函数;- 重复上述过程直至达到所需的精度。
5. 龙格-库塔法(四阶)龙格-库塔法是目前常用的数值解法之一,其精度较高。
四阶龙格-库塔法是其中较为常用的一种,其具体步骤如下:- 将自变量的区间等分为n个子区间;- 在每个子区间上进行多次迭代计算,得到该子区间上解函数的近似值;- 利用近似值计算每个子区间上的斜率,并以其加权平均值逼近解函数的斜率;- 计算下一个子区间的初始条件,并进一步逼近解函数;- 重复上述过程直至达到所需的精度。
第5章常微分方程数值解法

2hyxn
2h3 3!
y
yxn1
yxn1 2hyxn
h3 3
y ②
将①、②两式相减:
y
xn1
h3 yn1 3
y
——两步法局部截断误差
18
第19页/共24页
2024年8月7日
(2)梯形公式
yn1
yn
h 2
f
xn , yn
f
xn1 , yn1
yxn
hf
2
xn ,
yn1 yxn1 2hyxn ①
2024年8月7日
17
第18页/共24页
2024年8月7日
将函数用泰勒级数展开:( h 较小, 相差不大)
yxn1
yxn
h 1!
yxn
h2 2!
yxn
h3 3!
y
yxn1
yxn
h
1!
yxn
h2
2!
yxn
h3
3!
y
yxn1
yxn1
yxn
f
xn1 , yxn1
yn1
yxn
h 2
y
xn
yxn1 ①
将函数用泰勒级数展开:
yxn1
yxn
h 1!
yxn
h2 2!
yxn
h3 3!
y ②
yxn1
yxn
h 1!
yxn
h2 2!
y ③
( h 较小, 相差不大)
19
第20页/共24页
2024年8月7日
①、②两式相减,并代入③式:
(图示表示梯形法计算结果)
常微分方程组数值解法

常微分方程组数值解法一、引言常微分方程组是数学中的一个重要分支,它在物理、工程、生物等领域都有广泛应用。
对于一些复杂的常微分方程组,往往难以通过解析方法求解,这时候数值解法就显得尤为重要。
本文将介绍常微分方程组数值解法的相关内容。
二、数值解法的基本思想1.欧拉法欧拉法是最基础的数值解法之一,它的思想是将时间连续化,将微分方程转化为差分方程。
对于一个一阶常微分方程y'=f(x,y),其欧拉公式为:y_{n+1}=y_n+hf(x_n,y_n)其中h为步长,x_n和y_n为第n个时间点上x和y的取值。
2.改进欧拉法改进欧拉法是对欧拉法的改良,其公式如下:y_{n+1}=y_n+\frac{h}{2}[f(x_n,y_n)+f(x_{n+1},y_n+hf(x_n,y_n))] 3.四阶龙格-库塔方法四阶龙格-库塔方法是目前最常用的数值解法之一。
其公式如下:k_1=f(x_n,y_n)k_2=f(x_n+\frac{h}{2},y_n+\frac{h}{2}k_1)k_3=f(x_n+\frac{h}{2},y_n+\frac{h}{2}k_2)k_4=f(x_n+h,y_n+hk_3)y_{n+1}=y_n+\frac{h}{6}(k_1+2k_2+2k_3+k_4)其中,k_i为中间变量。
三、常微分方程组的数值解法1.欧拉法对于一个二阶常微分方程组:\begin{cases} y'_1=f_1(x,y_1,y_2) \\ y'_2=f_2(x,y_1,y_2)\end{cases}其欧拉公式为:\begin{cases} y_{n+1,1}=y_{n,1}+hf_1(x_n,y_{n,1},y_{n,2}) \\y_{n+1,2}=y_{n,2}+hf_2(x_n,y_{n,1},y_{n,2}) \end{cases}其中,x_n和y_{n,i}(i=1, 2)为第n个时间点上x和y_i的取值。
5.1常微分方程的数值解法

5.1常微分⽅程的数值解法第五章常微分⽅程的差分⽅法⼀、教学⽬标及基本要求通过对本节课的学习,使学⽣掌握常微分⽅程、常微分⽅程⽅程组的数值解法。
⼆、教学内容及学时分配本节课主要介绍常微分⽅程的数值解法。
具体内容如下:讲授内容:欧拉公式、改进的欧拉公式。
三、教学重点难点1.教学重点:改进的欧拉公式、龙格库塔⽅法、收敛性与稳定性。
2. 教学难点:收敛性与稳定性。
四、教学中应注意的问题多媒体课堂教学为主。
适当提问,加深学⽣对概念的理解。
五、正⽂基于数值积分的求解公式:欧拉公式、改进的欧拉公式引⾔1.主要考虑如下的⼀阶常微分⽅程初值问题的求解:00()(,)()y x f x y y x y '=??=?微分⽅程的解就是求⼀个函数y=y(x),该函数满⾜微分⽅程并且符合初值条件。
2. 例如微分⽅程:xy'-2y=4x ;初始条件: y(1)=-3。
于是可得⼀阶常微分⽅程的初始问题24(1)3y y x y ?'=+=-?。
显然函数y(x)=x 2-4x 满⾜以上条件,因⽽是该初始问题的微分⽅程的解。
3. 但是,只有⼀些特殊类型的微分⽅程问题能够得到⽤解析表达式表⽰的函数解,⽽⼤量的微分⽅程问题很难得到其解析解,有的甚⾄⽆法⽤解析表达式来表⽰。
因此,只能依赖于数值⽅法去获得微分⽅程的数值解。
4.微分⽅程的数值解:设微分⽅程问题的解y(x)的存在区间是[a,b],初始点x 0=a ,将[a,b]进⾏划分得⼀系列节点x 0 , x 1 ,...,x n ,其中a= x 0< x 1<…< x n =b 。
y(x)的解析表达式不容易得到或根本⽆法得到,我们⽤数值⽅法求得y(x)在每个节点x k 的近似值y(x k ),即 y≈y(x k ),这样y 0 , y 1 ,...,y n 称为微分⽅程的数值解。
如果计算y n 时,只利⽤y n-1,称这种⽅法为单步法;如果在计算y n 时不仅利⽤y n-1,⽽且还要利⽤y n-2, y n-3,…, y n-r ,则称这种⽅法为r 步⽅法,也称多步法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
§1 Euler’s Method
y Pn+1 Pn y(x)
xn
xn+1
x
见上图, 显然,这种近似也有一定误差,
如何估计这种误差y(xn+1) yn+1 ? 方法同上,基于Taylor展开估计局部截断误差。 但是注意,隐式公式中右边含有f(xn+1 , yn +1 ) , 由于yn +1不准确,所以不能直接用 y' (xn+1)代替f(xn+1 , yn +1 )
§1 Euler’s Method
收敛性
y
( k 1) n 1
yn 1
h (k ) f ( xn 1 , yn 1 ) f ( xn 1 , yn 1 ) 2
k 1
h hL (k ) (0) L yn 1 yn 1 y n 1 yn 1 2 2 2 hL ( k 1) 当 h 时, 1, yn yn 1 ( k ) 1 L 2 在迭代公式中取极限,有 h yn 1 yn f ( xn , yn ) f ( xn 1 , yn 1 ) 2 (k ) 因此yn 的极限就是隐式方程的解 1
y( xn ) O(h3 )
定义 若某算法的局部截断误差为 O(hp+1),则称该算法有 p 阶精度。 欧拉法具有 1 阶精度。
§1 Euler’s Method
在第2章讨论牛顿插值公式时 介绍了差商的概念和性质, 各阶差商可以近似各阶导数,具有不同的精度, 且可以用函数值来表示。 上一章中数值微分的方法之一 就是用差商近似导数 在xn点用一阶向前差 商近似一阶导数
显然,这种近似有一定误差, 而且步长越大,误差越大, 如何估计这种误差y(xn+1) yn+1 ?
定义 在假设 yn = y(xn),即第 n 步计算是精确的前提下,考 虑公式或方法本身带来的误差: Rn = y(xn+1) yn+1 , 称为局部 截断误差 /* local truncation error */。
method or backward Euler method*/
§1 Euler’s Method
xn+1点向后差商近似导数
y ( xn 1 ) y ( xn ) y( xn 1 ) h y ( xn 1 ) y ( xn ) hy( xn 1 )
y ( xn ) yn y ( xn 1 ) yn 1 yn h f ( xn 1 , yn 1 )
第五章 常微分方程数值解
/* Numerical Methods for Ordinary Differential Equations */
待求解的问题:一阶常微分方程的初值问题 /* Initial-Value Problem */:
dy f ( x, y) dx y ( a ) y0 x [a , b ]
欧拉法的局部截断误差: 3 h2 Rn1 y( xn1 ) yn1 [ y ( xn ) hy ( xn ) 2 y ( xn ) O(h )]
Rn+1 的主项
/* leading term */
[ yn hf ( xn , yn )]
h2 2
§1 Euler’s Method
隐式欧拉法的局部截断误差:
由微分中值定理,得 f xn 1 , yn 1 f xn 1 , y xn 1 f y xn 1 , yn 1 y xn 1 ,
在yn 1,y xn 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 ( xn 1 ) y ( xn ) hy ( xn )
Euler’s method
y ( xn 1 ) y ( xn ) y( xn ) h
y ( xn ) yn y ( xn 1 ) yn 1 yn h f ( xn , yn )
欧拉公式的改进: 隐式欧拉法或后退欧拉法 /* implicit Euler
yn1 yn h f ( xn , yn )
n 0, 1,...
--------Euler’s Method
几何意义
几何直观是帮助我们寻 找解决一个问题的思路 的好办法哦 亦称为欧拉折线法
/* Euler’s polygonal arc method*/
§1 Euler’s Method
隐式或后退欧拉公式
0 yn 1 yn h f ( xn , yn ) ( k 1) (k ) y y h f ( x , y n n 1 n 1 ) n 1 收敛性
由于未知数 yn+1 同时出现在等式的两边,故称为隐式 /* implicit */ 欧拉公式,而前者称为显式 /* explicit */ 欧拉公 式。隐式公式不能直接求解,一般需要用Euler显式公式 得到初值,然后用Euler隐式公式迭代求解。因此隐式公 式较显式公式计算复杂,但稳定性好
说明
§1 Euler’s Method
截断误差: 实际上,y(xn) yn, yn 也有误差,它对yn+1的误差 也有影响,见下图。但这里不考虑此误差的影响,仅考虑方 法或公式本身带来的误差,因此称为方法误差或截断误差。
局部截断误差的分析:由于假设yn = y(xn) ,即yn准确,因此 分析局部截断误差时将y(xn+1) 和 yn+1都用点xn上的信息来表 示,工具:Taylor展开。
2
1 1 hf y xn 1 ,
1 hf y xn 1 , h
f x
y
n 1
,
2
1 ( 1 x x 2 ) 1 x
§1 Euler’s Method
2 3 2 h h 2 Rn1 1 hf y xn1 , h f y xn1 , y xn y xn 3 2 h2 h3 y xn 3 f y xn1 , y xn 2 y xn 2 6 h2 Rn1 y xn o(h2 ) 2
§1 Euler’s Method
从而 Rn 1 y ( xn 1 ) yn 1 hf y xn 1 , y xn 1 yn 1 h2 h3 y xn y xn 2 3 即 1 hf x , R y n 1 n 1 h2 h3 y xn y xn 2 3
y( xn ) O(h3 )
§1 Euler’s Method
若将这两种方法进行算术平均,即可消除误差 的主要部分/*leading term*/ 而获得更高的精度,称为梯形法
梯形公式 /* trapezoid formula */
— 显、隐式两种算法的平均
h yn 1 yn [ f ( xn , yn ) f ( xn 1 , yn 1 )] 2
§1 欧拉方法 /* Euler’s Method */
§1 Euler’s Method
y ( xn 1 ) y ( xn ) hy ( xn ) y ( xn ) yn y ( xn 1 ) yn 1 yn h f ( xn , yn )
Taylor展开法
隐式欧拉法的局部截断误差: Rn1 y( xn1 ) yn1 h2 y( xn ) O(h3 )
2
即隐式欧拉公式具有 1 阶精度。
§1 Euler’s Method
比较尤拉显式公式和隐式公式及其局部截断误差
显 式 yn1 yn h f ( xn , yn ) n 0, 1,... 公 3 h2 R y ( x ) y y ( x ) O ( h ) 式 n1 n1 n1 n 2 隐 yn1 yn h f ( xn1 , yn1 ) 式 h2 公 Rn1 y( xn1 ) yn1 2 式
h2 又 f xn 1 , y xn 1 y xn 1 y xn hy xn y xn 2 yn 1 hf y xn 1 , yn 1 y xn 1 y xn 3 h hy xn h 2 y xn y xn 2 而 h2 h3 y xn 1 y xn hy xn y xn y xn 2 6
梯形法的简化计算
§1 Euler’s Method
迭代计算量大,且难以预测迭代次数。为了控制计算量,通常只迭代 一次就转入下一点的计算。用显式公式作预测,梯形公式作校正,得到如
解的存在唯一性(“常微分方程”理论):只要 f (x, y) 在[a, b] R1 上连续,且关于 y 满足 Lipschitz 条件,即存在与 x, y 无关的常数 L 使 | f ( x, y ) f ( x, y ) | L | y y |