第七章常微分方程数值解——计算方法-刘师少
第七章常微分方程数值解法
h2 h3 y ( xi 1 ) y ( xi h) y ( xi ) hy '( xi ) y ''( xi ) y '''( xi ) 2! 3!
丢掉高阶项,有
y( xi 1 ) y( xi h) y( xi ) hy '( xi ) yi hf ( xi , yi )
| f ( x, y1 ) f ( x, y2 ) | L | y1 y2 | ,
那么模型问题在 [ a, b] 存在唯一解。
Lipschitz 连续: | f ( x, y1 ) f ( x, y2 ) | L | y1 y2 | .
(1) 比连续性强: y1 y2 可推出 f ( x, y1 ) f ( x, y2 ) ; (2) 比连续的 1 阶导弱:具有连续的 1 阶导,则
f | f ( x, y1 ) f ( x, y2 ) || ( ) || y1 y2 | L | y1 y2 | . y
常微分方程数值解法
目标:计算出解析解 y ( x) 在一系列节点 a x0 x1 xn1 xn b 处的近似值 yi y( xi ) ,即所谓的数值解。节点间距 hi xi 1 xi ,一般 取为等距节点。
常微分方程初值问题的数值解法一般分为两大类: (1)单步法:在计算 yn 1 时,只用到前一步的值,即用到 xn1 , xn , yn ,则给定初
值之后,就可逐步计算。例如 Euler 法、向后欧拉法、梯形公式、龙格-库塔法;
(2) 多步法: 这 类 方 法 在 计算 yn 1 时 , 除 了 用 到 xn1 , xn , yn 外 , 还 要 用到
求常微分方程的数值解
求常微分方程的数值解一、背景介绍常微分方程(Ordinary Differential Equation,ODE)是描述自然界中变化的数学模型。
常微分方程的解析解往往难以求得,因此需要寻找数值解来近似地描述其行为。
求解常微分方程的数值方法主要有欧拉法、改进欧拉法、龙格-库塔法等。
二、数值方法1. 欧拉法欧拉法是最简单的求解常微分方程的数值方法之一。
它基于导数的定义,将微分方程转化为差分方程,通过迭代计算得到近似解。
欧拉法的公式如下:$$y_{n+1}=y_n+f(t_n,y_n)\Delta t$$其中,$y_n$表示第$n$个时间步长处的函数值,$f(t_n,y_n)$表示在$(t_n,y_n)$处的导数,$\Delta t$表示时间步长。
欧拉法具有易于实现和理解的优点,但精度较低。
2. 改进欧拉法(Heun方法)改进欧拉法又称Heun方法或两步龙格-库塔方法,是对欧拉法进行了精度上提升后得到的一种方法。
它利用两个斜率来近似函数值,并通过加权平均来计算下一个时间步长处的函数值。
改进欧拉法的公式如下:$$k_1=f(t_n,y_n)$$$$k_2=f(t_n+\Delta t,y_n+k_1\Delta t)$$$$y_{n+1}=y_n+\frac{1}{2}(k_1+k_2)\Delta t$$改进欧拉法比欧拉法精度更高,但计算量也更大。
3. 龙格-库塔法(RK4方法)龙格-库塔法是求解常微分方程中最常用的数值方法之一。
它通过计算多个斜率来近似函数值,并通过加权平均来计算下一个时间步长处的函数值。
RK4方法是龙格-库塔法中最常用的一种方法,其公式如下:$$k_1=f(t_n,y_n)$$$$k_2=f(t_n+\frac{\Delta t}{2},y_n+\frac{k_1\Delta t}{2})$$ $$k_3=f(t_n+\frac{\Delta t}{2},y_n+\frac{k_2\Delta t}{2})$$ $$k_4=f(t_n+\Delta t,y_n+k_3\Delta t)$$$$y_{n+1}=y_n+\frac{1}{6}(k_1+2k_2+2k_3+k_4)\Delta t$$三、数值求解步骤对于给定的常微分方程,可以通过以下步骤求解其数值解:1. 确定初值条件:确定$t=0$时刻的函数值$y(0)$。
常微分方程数值解法5262115页PPT文档
r 表示食饵独立生存时的增长率;
d 表示捕食者独立生存时的死亡率;
a 表示捕食者的存在对食饵增长的影响系数,反映捕
食者对食饵的捕获能力;
b 表示食饵的存在对捕食者增长的促进系数,反映食
饵对捕食者的喂养能力
150 100
令 y 1 y ,y 2 y ',y 3 y '', ,y n y ( n 1 )
可以将以上高阶微分方程化为如下一阶常微分方程组
y1 ' y2 y2 ' y3 yn ' an(x)y1
a1(x)yn f (x)
例:P120,1(a),Bessel方程
常微分方程的数值解
一般地,凡表示未知函数,未知函数的导 数与自变量之间的关系的方程叫做微分方 程.未知函数是一元函数的,叫常微分方 程;未知函数是多元函数的,叫做偏微分方 程.
如
y ' x y'x2y2 y''y'xy
Matlab实现 [t,x]=ode45(f,ts,x0,options,p1,p2,......)
50 0 0
30 20 10
0 0
10
20
50
30
20
10
0
30
0
10
8
6
4
2
100
0
50
100
150
50
100
高阶常微分方程的解法
高阶常微分方程
y ( n ) a 1 ( x ) y ( n 1 ) a ( n 1 ) ( x ) y ' a n ( x ) y f( x )
计算方法 第7章 常微分方程数值解
第七章 常微分方程数值解
杨中华
北京工业大学应用数理学院
有很多实际问题是用微分方程建立其数学模型,但是
目前只能对少量典型的微分方程求出相应的解析形式的解
,而对于绝大多数的微分方程问题,很难或者根本不可能 得到它的解析解。因此,研究求解微分方程的数值解是非 常有意义的。 我们知道微分方程是关于未知函数及导数的方程,包 括常微分方程和偏微分方程。常微分方程所涉及的未知函 数是一元函数;如果未知函数是多元的,则称为偏微分方
证明:设
~ y n1 y( xn ) hf ( xn , y( xn ))
是Euler公式在 x n 处由准确的y(x)计算得到的结果,则有
en1 y( xn1 ) y n1 y( xn1 ) ~ y n1 ~ y n1 y n1
欧 拉 方 法
其中第一部分是局部截断误差有
5
0.10
1.10816161
该问题的解析解为 y 2e x x 1 ,因此
y(0.1) 2e 0.1 0.1 1 1.110341836
在 x 0.1处, y5 y(0.1) 0.00218 0.5 1013 ,3位有效数字
2. 截断误差 现在我们对Euler方法进行误差分析,也就是讨论Euler 公式的截断误差。
欧 拉 方 法
1) 局部截断误差 设 y ( x) 是微分方程初值问题的准确解,令
~ y n 1 y ( x n ) hf ( x n , y ( x n )) T y( x ) ~ y
n 1 n 1 n 1
则Tn 1为Euler公式在 x n 1处的局部截断误差,考虑 y ( x) 在 x n 处
各点的数值解 y0 , y1 ,, y m 。
(整理)第七章常微分方程数值解
(整理)第七章常微分方程数值解第七章常微分方程数值解7.1 引言本章讨论常微分方程初值问题(7.1.1)的数值解法,这也是科学与工程计算经常遇到的问题,由于只有很特殊的方程能用解析方法求解,而用计算机求解常微分方程的初值问题都要采用数值方法.通常我们假定(7.1.1)中f(x,y)对y满足Lipschitz 条件,即存在常数L>0,使对,有(7.1.2)则初值问题(7.1.1)的解存在唯一.假定(7.1.1)的精确解为,求它的数值解就是要在区间上的一组离散点上求的近似.通常取,h称为步长,求(7.1.1)的数值解是按节点的顺序逐步推进求得.首先,要对方程做离散逼近,求出数值解的公式,再研究公式的局部截断误差,计算稳定性以及数值解的收敛性与整体误差等问题. 7.2 简单的单步法及基本概念7.2.1 Euler法、后退Euler法与梯形法求初值问题(7.1.1)的一种最简单方法是将节点的导数用差商代替,于是(7.1.1)的方程可近似写成(7.2.1)从出发,由(7.2.1)求得再将代入(7.2.1)右端,得到的近似,一般写成(7.2.2)称为解初值问题的Euler法.Euler法的几何意义如图7-1所示.初值问题(7.1.1)的解曲线y=y(x)过点,从出发,以为斜率作一段直线,与直线交点于,显然有,再从出发,以为斜率作直线推进到上一点,其余类推,这样得到解曲线的一条近似曲线,它就是折线.Euler法也可利用的Taylor展开式得到,由(7.2.3) 略去余项,以,就得到近似计算公式(7.2.2).另外,还可对(7.1.1)的方程两端由到积分得(7.2.4)若右端积分用左矩形公式,用,,则得(7.2.2).如果在(7.2.4)的积分中用右矩形公式,则得(7.2.5)称为后退(隐式)Euler法.若在(7.2.4)的积分中用梯形公式,则得(7.2.6)称为梯形方法.上述三个公式(7.2.2),(7.2.5)及(7.2.6)都是由计算,这种只用前一步即可算出的公式称为单步法,其中(7.2.2)可由逐次求出的值,称为显式方法,而(7.2.5)及(7.2.6)右端含有当f对y非线性时它不能直接求出,此时应把它看作一个方程,求解,这类方法称为稳式方法.此时可将(7.2.5)或(7.2.6)写成不动点形式的方程这里对式(7.2.5)有,对(7.2.6)则,g与无关,可构造迭代法(7.2.7)由于对y满足条件(7.1.2),故有当或,迭代法(7.2.7)收敛到,因此只要步长h足够小,就可保证迭代(7.2.7)收敛.对后退Euler法(7.2.5),当时迭代收敛,对梯形法(7.2.6),当时迭代序列收敛.例7.1用Euler法、隐式Euler法、梯形法解取h=0.1,计算到x=0.5,并与精确解比较.解本题可直接用给出公式计算.由于,Euler法的计算公式为n=0时,.其余n=1,2,3,4的计算结果见表7-1. 对隐式Euler法,计算公式为解出当n=0时,.其余n=1,2,3,4的计算结果见表7-1. 表7-1 例7.1的三种方法及精确解的计算结果对梯形法,计算公式为解得当n=0时,.其余n=1,2,3,4的计算结果见表7-1.本题的精确解为,表7-1列出三种方法及精确解的计算结果.7.2.2 单步法的局部截断误差解初值问题(7.1.1)的单步法可表示为(7.2.8)其中与有关,称为增量函数,当含有时,是隐式单步法,如(7.2.5)及(7.2.6)均为隐式单步法,而当不含时,则为显式单步法,它表示为(7.2.9)如Euler法(7.2.2),.为讨论方便,我们只对显式单步法(7.2.9)给出局部截断误差概念.定义2.1设y(x)是初值问题(7.1.1)的精确解,记(7.2.10)称为显式单步法(7.2.9)在的局部截断误差.之所以称为局部截断误差,可理解为用公式(7.2.9)计算时,前面各步都没有误差,即,只考虑由计算到这一步的误差,此时由(7.2.10)有局部截断误差(7.2.10)实际上是将精确解代入(7.2.9)产生的公式误差,利用Taylor展开式可得到.例如对Euler法(7.2.2)有,故它表明Euler法(7.2.2)的局部截断误差为,称为局部截断误差主项.定义2.2 设是初值问题(7.1.1)的精确解,若显式单步法(7.2.9)的局部截断误差,是展开式的最大整数,称为单步法(7.2.9)的阶,含的项称为局部截断误差主项.根据定义,Euler法(7.2.2)中的=1故此方法为一阶方法.对隐式单步法(7.2.8)也可类似求其局部截断误差和阶,如对后退Euler法(7.2.5)有局部截断误差故此方法的局部截断误差主项为,也是一阶方法.对梯形法(7.2.6)同样有它的局部误差主项为,方法是二阶的.7.2.3 改进Euler法上述三种简单的单步法中,梯形法(7.2.6)为二阶方法,且局部截断误差最小,但方法是隐式的,计算要用迭代法.为避免迭代,可先用Euler法计算出的近似,将(7.2.6)改为(7.2.11)称为改进Euler法,它实际上是显式方法.即(7.2.12)右端已不含.可以证明,=2,故方法仍为二阶的,与梯形法一样,但用(7.2.11)计算不用迭代.例7.2用改进Euler法求例7.1的初值问题并与Euler法和梯形法比较误差的大小.解将改进Euler法用于例7.1的计算公式当n=0时,.其余结果见表7-2.表7-2 改进Euler法及三种方法的误差比较从表7-2中看到改进Euler法的误差数量级与梯形法大致相同,而比Euler法小得多,它优于Euler法.讲解:求初值问题(7.1.1)的数值解就是在假定初值问题解存在唯一的前提下在给定区间上的一组离散点上求解析解的一组近似为此先要建立求数值解的计算公式,通常称为差分公式,简单的单步法就是由计算下一步,构造差分公式有三种方法,一是用均差(即差商)近似,二是用等价的积分方程(7.2.4)用数值积分方法,三是用函数的Taylor展开,其中Taylor展开最有普遍性,可以得到任何数值解的计算公式及其局部截断误差。
计算方法 第七章 常微分方程数值解法
7.1.1 欧拉法及其截断误差
4、欧拉公式的截断误差是O(h2),公式是1 阶的。
因为
yi+ 1 ? yi
1
h f ( x i , y i ) = y ( x i ) + h y ¢( x i )
1 2
1
2n ) ( n y ( x ) y (( x)i 1 ) ( y i()x i ) y y ( ) ( x h i ) ( )yh ( ( x x i ) xi y x ) ( xi ) x y y 2 n! 2
y0 y( x0 )
i1 i i i
(欧拉公式)
9
7.1.1 欧拉法及其截断误差
例 取步长 h=0.1,用欧拉法求解初值问题
ì y ¢= x + y ï ï í ï y (0) = 1 ï î
y i 1 y i h f ( x i , y i ) , i 0 ,1 , 2 , y0 y( x0 )
y f ( x , y ), y( x0 ) y0
x [a , b ]
23
7.1 欧拉法和改进的欧拉法
欧拉公式
y i 1 y i h f ( x i , y i ) , i 0 ,1 , 2 , y0 y( x0 )
h y i 1 y i [ f ( x i , y i ) f ( x i 1 , y i 1 )] , i 0 ,1 , 2 , 2 y y( x ) 0 0
( p)
1.2 ? 1.24
1.528
y 2 = y 1 + 0 .1[( x1 + y 1 ) + ( x 2 + y 2 )] = 1 .2 4 + 0 .1(0 .2 + 1 .2 4 + 0 .4 + 1 .5 2 8) = 1 .5 7 6 8
计算方法课件7
阶方法。改进尤拉公式需计算两次f(x,y)的值,它
是二阶方法。它的局部截断误差为h 3 ) O( 。
于是可考虑,在 xi , xi 1 内多取几个点的斜率值, 然后将其加权平均作为平均斜率,则可构造出更高精 度的计算格式,这就是龙格—库塔(Runge-Kutta) 法的基本思想。
显式龙格-库塔公式
注:梯形公式局部截断误差 Ri y( xi 1 ) yi 1 O(h3 ) , 即梯形公式具有2 阶精度,比尤拉方法有了进步。 但注意到该公式是隐式公式.
三 改进尤拉公式
Step 1: 先用显式尤拉公式作预测,算出 y i 1 y i h f ( x i , y i ) Step 2: 再将 yi 1 代入隐式梯形公式的右边作校正,得到
h yi 1 yi [ f ( x i , yi ) f ( x i 1 , yi 1 )] 2
改进尤拉公式 这是一种显式格式,它可以表示为嵌套形式。
y i 1 h yi f ( x i , yi ) f xi 1 , yi h f ( xi , yi ) 2 ( i 0, ... , n 1)
yi 1 yi hf ( xi , yi ) h yi 1 yi 2 [ f ( xi , yi ) f ( xi 1 , yi 1 )]
于是有
yi 1 yi 0.2( yi yi2 sin xi ) 2 2 yi 1 yi 0.1( yi yi sin xi yi 1 yi 1 sin xi 1 )
则初值问题(7.1)、(7.2)存在唯一解,且解是连续可微的。
即求出解函数 y(x) 在一系列节点 a = x0< x1<…< xn= b 处的近似值
计算方法-刘师少版课后习题答案
计算⽅法-刘师少版课后习题答案1.1 设3.14, 3.1415, 3.1416分别作为π的近似值时所具有的有效数字位数解近似值x =3.14=0.314×101,即m =1,它的绝对误差是-0.001 592 6…,有31105.06592001.0-*?≤=- x x .即n =3,故x =3.14有3位有效数字. x =3.14准确到⼩数点后第2位. ⼜近似值x =3.1416,它的绝对误差是0.0000074…,有 5-1*10?50≤00000740=-.. x x 即m =1,n =5,x =3.1416有5位有效数字.⽽近似值x =3.1415,它的绝对误差是0.0000926…,有4-1*10?50≤00009260=-.. x x即m =1,n =4,x =3.1415有4位有效数字. 这就是说某数有s 位数,若末位数字是四舍五⼊得到的,那么该数有s 位有效数字1.2 指出下列各数具有⼏位有效数字,及其绝对误差限和相对误差限:2.0004 -0.00200 9000 9000.00解(1)∵ 2.0004=0.20004×101, m=1绝对误差限:4105.0000049.020004.0-*?≤≤-=-x x xm -n =-4,m =1则n =5,故x =2.0004有5位有效数字1x =2,相对误差限000025.010221102151)1(1=??=??=---n r x ε(2)∵-0.00200= -0.2×10-2, m =-25105.00000049.0)00200.0(-*?≤≤--=-x x xm -n =-5, m =-2则n =3,故x =-0.00200有3位有效数字1x =2,相对误差限3110221-??=r ε=0.0025 (3) ∵ 9000=0.9000×104, m =4,0105.049.09000?<≤-=-*x x xm -n =0, m =4则n =4,故x =9000有4位有效数字4110921-??=r ε=0.000056 (4) ∵9000.00=0.900000×104, m =4,2105.00049.000.9000-*?<≤-=-x x xm -n =-2, m =4则n =6,故x =9000.00有6位有效数字相对误差限为6110921-??=rε=0.000 00056 由(3)与(4)可以看到⼩数点之后的0,不是可有可⽆的,它是有实际意义的.1.3 ln2=0.69314718…,精确到310-的近似值是多少?解精确到310-=0.001,即绝对误差限是ε=0.0005,故⾄少要保留⼩数点后三位才可以.ln2≈0.693 2.1 ⽤⼆分法求⽅程013=--x x在[1, 2]的近似根,要求误差不超过31021-?⾄少要⼆分多少?解:给定误差限ε=0.5×10-3,使⽤⼆分法时,误差限为)(211*a b x x k k -≤-+ 只要取k 满⾜ε<-+)(211a b k 即可,亦即 96678.912lg 10lg 35.0lg 12lg lg )lg(=-+-=---≥εa b k只要取n =10.2.3 证明⽅程1 -x –sin x =0 在区间[0, 1]内有⼀个根,使⽤⼆分法求误差不超过0.5×10-4的根要⼆分多少次?证明令f (x )=1-x -sin x ,∵ f (0)=1>0,f (1)=-sin1<0∴ f (x )=1-x -sin x =0在[0,1]有根.⼜ f '(x )=-1-c os x<0 (x ∈[0.1]),故f (x ) 在[0,1]单调减少,所以f (x ) 在区间[0,1]内有唯⼀实根.给定误差限ε=0.5×10-4,使⽤⼆分法时,误差限为)(211*a b x x k k -≤-+ 只要取k 满⾜ε<-+)(211a b k 即可,亦即7287.1312lg 10lg 45.0lg 12lg lg )lg(=-+-=---≥εa b k只要取n =14.2.4 ⽅程0123=--x x 在x =1.5附近有根,把⽅程写成四种不同的等价形式,并建⽴相应的迭代公式:(1)211xx +=,迭代公式2111kk x x +=+ (2)231x x +=,迭代公式3211k k x x +=+(3)112-=x x,迭代公式111-=+k k x x (4)13-=x x ,迭代公式131-=+k k x x试分析每种迭代公式的收敛性,并选取⼀种收敛迭代公式求出具有四位有效数字的近似根。
常微分方程数值解算法
常微分方程数值解算法常微分方程是在物理、经济、生物、环境科学等领域中最基本的数学工具之一。
为了解决实际问题,需要求解这些方程的解。
但是,大部分常微分方程是无法求得解析解的,因此需要通过数值方法来求解。
在数值方法中,其基本思想是将微分方程化为一个逐步求解的问题。
通过离散化得到一个差分方程,然后通过数值方法求解这个差分方程。
本文将就常微分方程的数值解算法进行介绍和探讨。
1.欧拉方法欧拉方法是最基本的一种常微分方程数值解方法。
它的基本思想是将微分方程化为差分方程。
欧拉方法是一种一阶的显式方法。
通过计算当前点处的斜率即可进行逼近。
如下所示:y(t + h) = y(t) + hf(t, y(t))其中,h是步长。
f(t, y)是微分方程右边的函数。
欧拉方法的由来是其是以欧拉为名的。
这种方法的优点是简单明了,易于理解。
但是,其与真实解的误差随着步长增大而增大,误差不精,计算速度较慢等缺点也使其并非一个完美的数值解方法。
2.改进的欧拉方法改进的欧拉方法被认为是欧拉方法的一个进化版。
它是二阶数值方法,明显优于欧拉方法。
其基本思想是通过步长的平均值h/2来进行逼近。
y(t + h) = y(t) + h[ f(t, y(t)) + f(t + h, y(t) + hf(t, y(t))/2) ]其优点是能够更准确地逼近微分方程的解,只比欧拉方法多计算一些,但是其步长的误差随着步长增大而减小,并且计算速度比欧拉方法稍快。
因此,改进的欧拉方法是比欧拉方法更好的方法,效果相对较好。
3.龙格库塔方法龙格库塔方法是一种经典的数值解方法。
对于非刚性的方程可以得到较为精确的数值解。
其算法思路是利用多阶段迭代的方式,求解一些重要的插值点,并利用插值点的结果来逼近方程的解。
其公式如下:y(t + h) = y(t) + (h/6)*(k1 + 2k2 + 2k3 + k4)其中,k1 = f(t, y(t))k2 = f(t + h/2, y(t) + h/2k1)k3 = f(t + h/2, y(t) + h/2k2)k4 = f(t + h, y(t) + hk3)其优点是更精确,计算速度更快。
《数值分析》第7章 常微分方程的数值解法
1.040818
0.4
1.056100
1.070320
0.5
1.090490
1.106531
7.2.2 隐式Euler公式
隐式Euler公式除了可以用上一小节中的方法来推导外,亦可以用差商近似
导数的方法来推导。
在 xn1点处列出式(7.1)中的常微分方程,得
y( xn1) f (xn1, y( xn1))
h(1 2
h)
xn
h 2
( xn
h
h(2 2
h) )
= 0.905yn 0.095xn 0.1
7.2.4 改进Euler公式
当n=0时, y1 0.905 y0 0.095x0 0.1 1.005其00余0结果见表7-4。由
表7-4可以看出,改进Euler公式与梯形公式的精度相当。
y(xn1) y(xn ) hf (xn , y(xn ))
(7.3)
用 yn 代替 ,得到下列递推公式
yn1 yn hf (xn , yn ) (n 0,1, 2,…)
(7.4)
由 y(x0 )=y0依次递推得到 y1, y2 ,…, yn ,…式(7.4)称为Euler公式。
7.2.1 欧拉法
例1 用Euler公式计算下列初值问题(取步长h=0.1):
y y x 1 (0 x 0.5)
y(0)
1
解:Euler公式的计算格式为
yn1 yn hf (xn , yn ) yn +0.(1 -yn xn +1) 0.9 yn 0.1xn 0.1
由 y(0) 1进行递推计算得:
xn
二阶Taylor公式yn 四阶Taylor公式yn
yn1
第7章 常微分方程数值解法简介-2011-04
y' ( x0 ) f ( x0 , y( x0 )) f ( x0 , y0 ) 。
容易求出这个一阶微分方程初值问题的解为
(7.1.1)
u ua (u0 ua )ekt
u1 ua (u0 ua )e10k
0 0 u0 u 将 150 C , a 24 C 代入,得
(7.1.2)
根据问题所给的条件知 t 10 ,当时,u u1 1000 C ,得到
(7.2.4)
Euler法有明显的几何意义:
实际上,初值问题(7.2.1)的解是xy平面上过点 ( x0 , y0 ) 的一 条积分曲线。按Euler法,过初始点 ( x0 , y0 ) 作经过此点的积分曲线的 切线(斜率为 f ( x0 , y0 ) ),沿切线取点1 , y1( y1 按式(7.2.4)计算) (x ) 作为 ( x1 , y( x1 )) 的近似.然后,过 ( x1 , y1 ) 作经过此点的积分曲线的切线 (斜率为 f ( x1 , y1 ) ),沿切线取点 ( x2 , y2 ) y2按式(7.2.4)计算)作 ( 为 ( x2 , y( x2 )) 的近似.如此下去,即得一条以 ( xn , yn ) 为顶点的折线, 这就是用Euler法得到的近似积分曲线,如图7-1所示.从几何图形上 看, h 越小,此折线逼近积分曲线越好,因此也称Euler法为Euler 折线法。
f ( x, y1 ) f ( x, y2 ) L y1 y2
第七章常微分方程的数值解法课件
一个物体的温度变化速度与这个物体的温度和其所在的介质温度的差
值成正比。这是已为实验证实了的牛顿(Newton)冷却定律。设物 体在时刻的温度为 u , u则(t)温度的速度以 来示d。u
dt
注意到热量总是从温度高的物体向温度低的物体传导,因而 。u0 所 u以a 温 度差 恒正u;又ua因物体将随时间而逐渐冷却,故温度变化速度恒负。故有:
不过并不是所有的微分方程模型都可用上述方法求解出来。1638年莱布尼 茨向全世界提出如下的求解方法.
dy x2 y2 dx
该问题1886年才被数学家刘维尔证明没有解析解。只能借助于本章要介绍的 数值解法。
7.2 初值问题数值解法的推导方式及常用解法
我们先考虑常微分方程初值问题。它的数学模型是:求 y,使y(之x)满足
取步长h=0.02.
解 因为步长h=0.02,所以各节点xi 0.02i,i 0,1, 2,3, 4,5. 因为 y0 利1,用欧拉法的计算公式
yi1
yi
0.9hyi 1 2xi
,
可取 y1 0.9820, y2 0.9650, y3 0.9489, y4 0.9337, y5 0.9192.
,
需要知道两个初值.在此,我们利用后退欧拉法计算的结 果 y1 再 0依.9次830计, 算
y2 0.9660, y3 0.9508, y4 0.9354, y5 0.9218.
例7.2.1的解析解是 y (1 2用x)它0.45计, 算各节点的函数值可得
y1 0.9825055161, y2 0.9659603719, y3 0.9502806582,
把上述y4 三 0种.9方353法92计54算62的, y结5 果0.同921准23确07对78照3.,可以看出它们确 实都是准确值的近似值,只是误差不一样.欧拉法的误差偏 小,后退欧拉法偏大,中点法最小.这跟它们的局部截断误差 的符号、阶数、大小是一致的。
chap7常微分方程的数值解法-PPT精品文档
如果利用下列数值微分公式
y ( x ) y ( x )h n 1 n y ( x ) y ( ) ,( x x ) n 1 n n n n 1 h 2
( x ) f ( x,y ( x ) )类似的可导出 由y
y y hf ( x , y ) n 1 n n 1 n 1
2 h y ( x ) y ( x ) hf ( x , y ( x )) y ( )( 7 . 1 . 5 ) n 1 n n n n 2 !
7: ODE 10
2. Taylor 展开法 设 y (x)∈C2[a , b], 由 Taylor 公式有
2 h y ( x ) y () x h y () x y ()( x x ) . n 1 n n n n n n 1 2 (7.1.4) () f (, x y () x ) ,故上式即为 由于yx
上述公式称为后退的 Euler 公式, 此公式为 单步法公式. 又因为它关于 yn+1 成隐式形式, 所以该公式为隐式公式,简称隐格式.
7: ODE 9
y (x x (x ), n) f ( n, y n) 如果利用下列三点数值微分公式 y (x 0 ,1 , ,N . 0) y 0,n
y ( x ) y ( x ) h n 1 n fx ( , y ( x ) ) y ( ) , n n n h 2
7: ODE 7
有
略去余项, 并以数值解 yn , yn+1 代替 y (xn) 及 y (xn+1), 则得差分方程
y y hf ( x , y ) ( 7 . 1 . 2 ) n 1 n n n
计算方法_07
第七章 常微分方程数值解法
西南交通大学软件学院 计算机基础教研室 戴克俭制作
1
第七章 常微分方程数值解法
常微分方程是描述运动、变化规律的重要数学方 法之一,分为初值问题和边值问题两大类。在高等 数学中,介绍了一些典型方程的解析解的求解方法。 但是,在实际工程和科学研究中遇到的微分方程往 往比较复杂,很难甚至不能求出其解的解析表达式, 因而需要研究数值求解方法。本章重点讨论下面的 初值问题数值求解方法:
5
7.1.1 Euler方法
截去
h2 T1 y ( n ) 2
(7-6)
可得y(xn)的近似值yn所满足的递推公式: yn1 yn hf ( xn , yn ) (7-7)
此式称为欧拉(Euler)公式。已知y0即可由此式依次求 出初值问题(7-1)的数值解y0、y1、…、yN。 欧拉公式的几何意义: 用一条折线近似代替方程的解曲线。 因此欧拉公式(7-7)常称为欧拉折线法。
(7-16)
其中ai、bij、ci都是与f、n无关的常数,其值应使公 式(7-16)的精度尽可能地高,该公式称为m级龙格-库 塔(Runge-Kutta)公式,简称R-K公式。
18
7.2 龙格—库塔法
下面以m=2的情形为例说明建立R-K公式的方法。为 简单起见,令a2=b21=a,即可建立如下形式的二级RK公式: k1 f ( x n , yn ) (7-17) k 2 f ( x n ah, yn ahk1 ) yn1 yn h(c1k1 c2 k 2 ) 其中a、c1、c2为待定常数。考虑其局部截断误差: T y( xn1 ) yn1 y( xn1 ) [ y( xn ) h(c1k1 c2 k2 )] 在xn点进行泰勒展开得:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
y( xi 1 ) y( xi 1 )
xi 1 xi 1
f x, y( x)dx
( 7.6 )
改用中矩形公式计算其积分项,即
xi 1
xi 1
f x, y( x)dx xi 1 xi 1 f xi , y( xi )
方程的阶数。如果未知函数y及其各阶导数
y , y ,, y
( n)
都是一次的,则称它是线性的,否则称为非线性的。
在高等数学中,对于常微分方程的求解,给出
了一些典型方程求解析解的基本方法,如可分离变
量法、常系数齐次线性方程的解法、常系数非齐次
线性方程的解法等。但能求解的常微分方程仍然是 有限的,大多数的常微分方程是不可能给出解析解。 譬如
xi p , yi p ( p 1,2,, k )
,即前面k步的值,此类方法称为多步法;其代表
是亚当斯法。
7.3 欧拉(Euler)法 7.3.1 Euler公式 欧拉(Euler)方法是解初值问题的最 简单的数值方法。初值问题
y f ( x, y ) y ( x0 ) y 0
xi 1
xi
y dx
xi 1
xi
f ( x, y)dx
xi 1 xi
y( xi 1 ) y( xi )
xi 1
xi
f ( x, y)dx y( xi )
f x, y( x)dx
(7.3)
选择不同的计算方法计算上式的积分项
xi 1
xi
f x, y( x)dx ,就会得到不同的计算公式。
yi 1 yi hf ( xi , yi ) y 0Байду номын сангаас y ( x0 )
i=0,1,…,n ( 7.2 )
还可用数值微分、数值积分法和泰勒展开法推导
Euler格式。以数值积分为例进行推导。
将方程 y f ( x, y)的两端在区间 xi , xi 1 上积分得,
Tel: 86613747 E-mail: lss@ 授课: 68 学分:4
第七章 常微分方程的数值解法
7.1 引言
包含自变量、未知函数及未知函数的导数或微
分的方程称为微分方程。在微分方程中, 自变量的 个数只有一个, 称为常微分方程.。自变量的个数 为两个或两个以上的微分方程叫偏微分方程。微分 方程中出现的未知函数最高阶导数的阶数称为微分
y y1 f ( x1 , y1 )(x x1 )
当 x x2 时,得
y2 y1 f ( x1 , y1 )(x2 x1 )
P1 P1 P0
Pi+1 Pn Pi Pi+1 Pi
y=y(x) Pn
x0
x1
xi
xi+1
xn
由此获得了P2的坐标。重复以上过程,就可获得一系 列的点:P1,P1,…,Pn。对已求得点 Pn ( xn , yn )
以 y ( xn ) = f ( xn , yn ) 为斜率作直线 y yn f (xn , yn )(x xn )
当 x xn1 时,得 yn1 yn f ( xn , yn )(x x1 xn ) 取 y( xn ) y n
P1 P1 P0
Pi+1 Pn Pi Pi+1 Pi
长可以相等,也可以不等。本章总是假定h为定数, 称为定步长,这时节点可表示为
xi x0 ih, i 1,2,, n 数值解法需要把连续性的问题加以离散化,从而求
出离散节点的数值解。
对常微分方程数值解法的基本出发点就是离散 化。其数值解法有两个基本特点,它们都采用“步 进式”,即求解过程顺着节点排列的次序一步一步
计算时yi+1的局部截断误差。
yi 1 y( xi ) h f ( xi , y( xi )) y( xi ) hy ( xi )
对于欧拉公式,假定 yi y( xi ) ,则有
而将真解y(x)在xi处按二阶泰勒展开
h2 y ( xi 1 ) y ( xi ) hy ( xi ) y ( ) 2!
y y0 f ( x0 , y0 )(x x0 )
当x x1时,得
y1 y0 f ( x0 , y0 )(x1 x0 )
这样就获得了P1点的坐标。
P1 P1 P0
Pi+1 Pn y=y(x) Pi Pn Pi+1 Pi
x0
x1
xi
xi+1
xn
同样, 过点P1(x1,y1),作积分曲线y=y(x)的切线 交直线x=x2于P2点,切线 P P 的斜率 y( x1 ) = f ( x1 , y1 ) 1 2 直线方程为
代入上式,并用yi近似代替式中y(xi)即可得到两
步欧拉公式
yi 1 yi 1 2hf ( xi , yi )
( 7.7 )
前面介绍过的数值方法,无论是欧拉
方法,还是梯形方法,它们都是单步法,其
特点是在计算yi+1时只用到前一步的信息yi;
可是公式(7.7)中除了yi外,还用到更前一步
P1 P1
Pi+1 Pn y=y(x) Pi Pn Pi Pi+1
切线 P0 P1 (其斜率为 y( x0 ) f ( x0 , y0 ) ),与x=x1直线
x0
x1
xi
xi+1
xn
相交于P1点(即点(x1,y1),得到y1作为y(x1)的近似值,
如上图所示。过点(x0,y0),以f(x0,y0)为斜率的切线 方程为
h y i f ( xi , y i ) f ( xi 1 , y i 1 ) ( 7.5 ) 2
(7.5)式的右端含有未知的yi+1,它是一个关于
yi+1的函数方程,这类数值方法称为隐式方法。相
反地,欧拉法是关于yi+1的一个直接的计算公式,
这类数值方法称为显式方法。
7.3.3 两步欧拉公式
欧拉(Euler)公式当然很粗糙。
例7.1 用欧拉法解初值问题
y y xy 2 y (0) 1 (0 x 0.6)
取步长h=0.2 ,计算过程保留4位小数
解: h=0.2, f ( x, y) y xy 2 欧拉迭代格式 yi 1 yi hf ( xi , yi ) yi hyi hxi yi2
的信息yi-1,即调用了前两步的信息,故称其
为两步欧拉公式
7.3.4. 欧拉法的局部截断误差 衡量求解公式好坏的一个主要标准是求解公式的 精度, 因此引入局部截断误差和阶数的概念。
定义7.1 在yi准确的前提下, 即 yi y( xi ) 时, 用数值
方法计算yi+1的误差 Ri y( xi 1 ) yi 1 , 称为该数值方法
的解y=y(x)代表通过点 ( x0 , y0 ) 的一条称之为 微分方程的积分曲线。积分曲线上每一点 ( x, y ) 的切线的斜率 y (x) 等于函数 f ( x, y) 在 这点的值。
Euler法的求解过程是:从初 始点P0(即点(x0,y0))出发, 作积分曲线y=y(x)在P0点上
P0
0.2 yi (4 xi yi ) (i 0,1,2)
当 k=0, x1=0.2时,已知x0=0,y0=1,有 y(0.2)y1=0.2×1(4-0×1)=0.8 当 k=1, x2=0.4时,已知x1 =0.2, y1 =0.8,有 y(0.4) y2 =0.2×0.8×(4-0.2×0.8)=0.6144 当 k=2, x3 =0.6时,已知x2 =0.4, y2 =0.6144,有 y(0.6) y3=0.2×0.6144×(4-0.4×0.6144)=0.4613
对于初值问题
y f ( x, y ) y ( x0 ) y 0
的数值解法,首先要解决的问题就是如何对微分方 程进行离散化,建立求数值解的递推公式。递推公 式通常有两类,一类是计算yi+1时只用到xi+1, xi 和yi,
即前一步的值,因此有了初值以后就可以逐步往下
计算,此类方法称为单步法;其代表是龙格—库塔 法。另一类是计算yi+1时,除用到xi+1,xi和yi以外, 还要用到
用左矩形方法计算积分项
xi 1
xi
f x, y( x)dx ( xi 1 xi ) f xi , y( xi )
代入(7.3)式,并用yi近似代替式中y(xi)即可得到 向前欧拉(Euler)公式
yi 1 yi hf ( xi , yi )
由于数值积分的矩形方法精度很低,所以
y x y
2
2
这个一阶微分方程就不能用初等函数及其积 分来表达它的解。
再如,方程
y y y (0) 1
的解 y e x ,虽然有表可查,但对于表 上没有给出 e x 的值,仍需插值方法来 计算
从实际问题当中归纳出来的微分方程,通常主要依 靠数值解法来解决。本章主要讨论一阶常微分方程 初值问题
h y i f ( xi , y i ) f ( xi 1 , y i 1 ) 2
代入(7.4)式,并用近似代替式中即可得到梯形公式
y i 1
( 7.5 )
由于数值积分的梯形公式比矩形公式的精度高, 因此梯形公式(7.5)比欧拉公式( 7.2 )的精度高 一个数值方法。
y i 1
对R内任意两个 y1 , y2 都成立,则方程( 7.1 )的解 y y (x) 在a, b上存在且唯一。