初值问题的数值解法
- 格式:pdf
- 大小:158.76 KB
- 文档页数:9
第九章常微分方程初值问题的数值解法§1 相关知识§2 几种简单的数值方法§3 Runge–Kutta方法§4 单步法的进一步讨论§5 线性多步法西北工业大学理学院欧阳洁1上述定理称为一阶常微分方程初值问题解的适定性(存在性、惟一性与稳定性)定理。
对所讨论的一阶常微分方程初值问题,本章假设该问题是适定的,即解析解y(x)在区间[a,b]上是存在、惟一,且具有充分的光滑度。
因此f(x,y(x))也充分光滑。
西北工业大学理学院欧阳洁3西北工业大学理学院欧阳洁5常微分方程初值问题的数值解法分为:①单(一)步法:计算时,只用到和,即前一步的值。
1+n y n y n n x x ,1+显式单步法的一般形式为②多步法:计算时,除用到和以外,还用到和,即用到前k 步的值。
p n x −)1;1,2,1(>−=−k k p y p n L 1+n y n y n n x x ,1+对单步法与多步法,有显式与隐式方法之分。
显式、隐式多步法的一般形式类似。
隐式单步法的一般形式为),,(1h y x h y y n n n n ϕ+=+),,,,(111h y x y x h y y n n n n n n ++++=ϕ数值解法建立的过程:通过一定的离散化方法,将连续性问题的求解转化为有限个离散节点上解析解近似值的求解。
常用的离散化方法:Taylor 展开法;差商直接代替微商;数值积分法。
西北工业大学理学院欧阳洁16设一般的单步法为:显式公式隐式公式定义为某一数值方法在处的整体截断误差。
111()n n n e y x y +++=−1n x +五单步法的局部截断误差和阶整体截断误差不仅与这一步的计算有关,还依赖于前面各步的计算。
1+n x 011,,,,x x x x n n L −下面着重分析计算中某一步的误差(局部截断误差),后面将对显式单步法,给出整体截断误差与局部截断误差之间的关系。
初值问题与解方法初值问题是数学中的一个重要概念,它涉及到微分方程的解的初始条件。
解决初值问题的方法有多种,本文将介绍几种常用的解法,并讨论它们的适用性和优缺点。
一、欧拉法(Euler's method)欧拉法是一种较为简单的数值解法,通过逐步逼近微分方程的解。
它的基本思想是将时间和空间分割成小的步长,并用线性逼近的方式求解微分方程。
欧拉法的计算公式为:y_{n+1} = y_n + h * f(t_n, y_n)其中,y_{n+1} 是下一个时间步长上的解,y_n 是当前时间步长上的解,h 是步长(时间或空间),f(t_n, y_n) 是微分方程的右端函数。
欧拉法的优点是简单易懂、计算量小。
然而,它的精度较低,对于具有较大步长或非线性的微分方程,可能会产生较大的误差。
二、改进的欧拉法(Improved Euler's method)改进的欧拉法是对欧拉法的一种改进方法,通过增加一个中间点的计算来提高精度。
改进的欧拉法的计算公式为:y_{n+1} = y_n + (h/2) * (f(t_n, y_n) + f(t_{n+1}, y_n + h * f(t_n, y_n)))改进的欧拉法通过使用两个不同的斜率来进行计算,提高了解的逼近精度。
相比于欧拉法,改进的欧拉法的精度更高,误差较小。
三、龙格-库塔方法(Runge-Kutta methods)龙格-库塔方法是一类常用的数值解法,包括一阶、二阶、四阶等不同精度的方法。
其中,最常用的是四阶龙格-库塔方法。
四阶龙格-库塔方法的计算公式为:k_1 = h * f(t_n, y_n)k_2 = h * f(t_n + h/2, y_n + k_1/2)k_3 = h * f(t_n + h/2, y_n + k_2/2)k_4 = h * f(t_n + h, y_n + k_3)y_{n+1} = y_n + (k_1 + 2k_2 + 2k_3 + k_4)/6四阶龙格-库塔方法通过使用多个斜率进行逼近,进而提高了解的精度。
常微分方程初值问题数值解法初值问题:即满足初值条件的常微分方程的解y′=f(x,y),x∈[x0,b]y(x0)=y0.定理1(利普希茨条件)若存在正数L,使得对任意,y1,y2,有|f(x,y1)−f(x,y2)|≤L|(y1−y2)|定理2(解存在性)①若函数f在方区域x∈[a,b],y∈R连续,②函数f关于y 满足利普希茨条件,则对任意x∈[a,b],常微分方程存在唯一的连续可微数值解.两类问题:①单步法---计算下一个点的值yn+1只需要用到前面一个点的值yn②多步法---计算下一个点的值yn+1需要用到前面l个点的值yl1、欧拉法---下一个点的计算值等于前一个点的计算值加上步长乘以前一个点的函数值•具体过程一些批注:显式欧拉方程指下一步要计算的值,不在迭代方程中;隐式欧拉方程指下一步要计算的值,在迭代方程中。
怎么计算隐式欧拉方程----要借助显示欧拉迭代计算---一般用迭代法-----迭代---将微分方程在区间[xn,xn+1]进行积分,然后函数f进行近似,即可得到迭代方程-----迭代方程收敛性?由函数关于y满足利普希茨条件,可以推出迭代公式收敛。
•局部截断误差:假设前n步误差为0,我们计算第n+1步的误差,将次误差称为局部截断误差,且局部误差为O(hp+1)•p阶精度:由理论证明:若局部误差阶的时间复杂度为O(hp+1),则整体误差阶为O(hp)我们称公式精度为p。
•显示欧拉法与隐式欧拉法•梯形方法----将显式欧拉迭代方程与隐式欧拉迭代方程做一下加权平均,构造的计算公式.•改进的欧拉方法---思想:因为梯形公式是隐式公式,将显式欧拉公式对下一步的计算值进行预估,用梯形公式对下一步的计算值进行校正.2、龙格-库塔方法思想:根据Lagrange中值定理,下一次的计算值可以用前一次的计算值加上h乘以前一个点的斜率;而这个斜率用该区间上的多个点的斜率的算数平均来逼近。
注意:怎么计算任意斜率Ki?第i个点的斜率Ki有微分方程可以算出f′=f(xn,yn)所以要算的f(xn,yn)值,由欧拉法即可算出, yn+1=yn+hf′•2阶-龙格-库塔方法----类似改进的欧拉法根据Lagrange中值定理,下一次的计算值可以用前一次的计算值加上h乘以斜率;而这个斜率用区间上的端点和中点的斜率的算数平均来逼近。
第九章常微分方程初值问题的数值解法第一部分内容提要一、数值解的一般概念常微分方程初值问题00'()(,)()y x f x y y x y =⎧⎨=⎩的数值解是指通过一定的近似方法得出准确解()y y x =在一列离散点012,,,,,n x x x x 上的近似值012,,,,,n y y y y 。
数值解的特征是步进式,即()y x 在1n x +点的近似值1n y +是由1,,n n x x -等若干点处的近似值1,,n n y y -的信息给出的递推公式。
若1n y +依赖于前面k 步的值11,,,n n n k y y y --+,则称为k 步法;1k =称为单步法。
利用()y x 在11,,,n n n k x x x --+的精确解11(),(),,()n n n k y x y x y x --+借助某种算法计算出1n y +,则称11()n n y x y ++-为该方法的局部截断误差。
如果一个算法的局部截断误差是1()p O h +,则称该方法是p 阶的;而利用数值解11,,,n n n k y y y --+得到的1n y +与微分方程的精确解之差11()n n y x y ++-称为整体截断误差,即是该数值方法的误差。
对于固定的0x x >,取0x x h n-=,用某种算法得到n y ,如有lim ()n h y x y →-=0,则称该方法是收敛的。
注意,因x 是固定的,随着0h →,数值解的步数n →∞。
二、在实际计算时因为舍入误差不可避免,实际得到数值解是n y ,稳定性即研究n n y y -是否随着计算步骤n 的增加而增加。
通常所提的稳定性是通过模型方程(0)y y λλ'=<来讨论的。
若当某一步n y 有舍入误差时,在以后的计算中误差不会逐步扩大,则称这种稳定性为绝对稳定性。
三、简单单步法及其收敛性、稳定性Euler 法1(,)n n n n y y hf x y +=+的局部截断误差为2()O h ,整体截断误差为()O h ,即一阶收敛。
第7章 常微分方程初值问题的数值解法7.1 引 言科学研究和工程技术中的许多问题在数学上往往归结为微分方程的求解问题。
为了确定微分方程的解,一般要加上定解条件,根据不同的情况,这些定解条件主要有初始条件(initial condition )和边界条件(boundary condition). 只含初始条件作为定解条件的微分方程求解问题称为初值问题(initial-value problem); 例如天文学中研究星体运动,空间技术中研究物体飞行等,都需要求解常微分方程初值问题(initial-value problem for ordinary differential equations). 只含边界条件作为定解条件的微分方程求解问题称为边值问题(boundary-value problem).除特殊情形外,微分方程一般求不出解析解,即使有的能求出解析解,其函数表示式也比较复杂,计算量比较大,而且实际问题往往只要求在某一时刻解的函数值. 为了解决这个问题,有两种方法可以逼近原方程的解。
第一种方法是:将原微分方程化简为可以准确求解的微分方程,然后使用化简后的方程的解近似原方程的解;第二种方法是:将求原微分方程的解析解转化为求原方程的数值解,这是实际中最常用的方法。
本章将介绍求解常微分方程初值问题的常用的数值方法。
第8章将介绍常微分方程的边值问题的常用的数值方法。
为简明起见,本章主要介绍形如()(,),,()y t f t y a t b y a α'=≤≤⎧⎨=⎩(7.1.1)的初值问题的数值解法. 在介绍这些方法之前,需要了解常微分方程的一些相关定义和结果.定义7.1.1 函数(,)f t y 称为在集合2D ⊂R 上关于变量y 满足Lipschitz 条件(Lipschitz condition),简称Lip 条件,如果存在常数0L >,使得1212(,)(,)f t y f t y L y y -≤- (7.1.2)对所有12(,),(,)t y t y D ∈都成立. 常数L 称为Lipschitz 常数(Lipschitz constant),简称Lip 常数.定义7.1.2 如果对所有1122(,),(,)t y t y D ∈,都有()1122(1),(1))t y t y D λλλλ-+-+∈, (7.1.3)其中01λ≤≤,那么称集合2D ⊂R 为凸集(convex set).()y t .定理7.1.2 设函数(,)f t y2上. 如果存在常数0L >,使得(7.1.4)对一切(,)t y D ∈成立,那么(,)f t y 在D 上关于变量y 满足Lipschitz 条件,且L 为求微分方程数值解的主要问题:(1) 如何将原微分方程离散化, 并建立求其数值解的递推公式;(2) 如何求递推公式的局部截断误差, 数值解n y 与精确解()n y t 的误差估计; (3) 研究递推公式的稳定性与收敛性.7.2 Euler 方法及改进的Euler 方法7.2.1 Euler 格式与梯形格式考虑一阶常微分方程的初值问题()(,),,().y t f t y a t b y a α'=≤≤⎧⎨=⎩(7.2.1) 设011N N a t t t t b -=<<<= ,其中0,0,1,,n t t n h n N =+= 为等距节点,步长()h b a N =-.在1[,](0,1,,1)n n t t n N +=- 上对(,())y f t y t '=两边积分,得11()()(,())d n nt n n t y t y t f t y t t ++=+⎰(7.2.2)7.2.1.1 Euler 格式用左矩形求积公式计算式(7.2.2)右端积分项,得1(,())d (,())n nt n n t f t y t t h f t y t +≈⎰,代入式(7.2.2)右端,得1()()(,())n n n n y t y t h f t y t +≈+. (7.2.3)用()n y t 的近似值n y 代入式(7.2.3)右端,记所得结果为1+n y ,得10(,),0,1,,1,,n n n n y y h f t y n N y α+=+=-⎧⎨=⎩ (7.2.4) 并称式(7.2.4)为求解初值问题(7.2.1)的Euler 方法(Euler ’s method)或Euler 格式(Euler scheme),1(,)n n n n y y h f t y +=+称为差分方程(difference equation).注 Euler 方法是最早的解决一阶常微分方程初值问题的一种数值方法,虽然它的精度不高,很少被采用,但是它反映了微分方程的数值解法的基本思想和特征.若式(7.2.2)右边的积分由数值积分的右矩形公式近似,并用近似值n y 替代()n y t ,近似值1+n y 替代1()n y t +,则可得到1110(,),0,1,,1,,n n n n y y h f t y n N y α+++=+=-⎧⎨=⎩ (7.2.5) 并称式(7.2.5)为后退的Euler 方法(backward Euler ’s method) 或后退的Euler 格式(backward Euler ’s scheme). 111(,)n n n n y y h f t y +++=+是差分方程。
常微分方程初值问题的数值解法在实际应用中,对于某些微分方程,我们并不能直接给出其解析解,需要通过数值方法来求得其近似解,以便更好地理解和掌握现象的本质。
常微分方程初值问题(IVP)即为一种最常见的微分方程求解问题,其求解方法有多种,本文将对常微分方程初值问题的数值解法进行较为详细的介绍。
一、欧拉法欧拉法是最基本的一种数值解法,它采用泰勒级数展开并截断低阶项,从而获得一个差分方程近似求解。
具体来讲,设 t 为独立变量,y(t) 为函数 y 关于 t 的函数,方程为:$$y'(t) = f(t, y(t)), \qquad y(t_0) = y_0$$其中 f(t,y(t)) 为已知的函数,y(t_0) 为已知的初值。
将函数 y(t) 进行泰勒级数展开:$$y(t+h) = y(t) + hf(t, y(t)) + O(h^2)$$其中 h 表示步长,O(h^2) 表示其他高阶项。
为了使误差较小,一般取步长 h 尽可能小,于是我们可以用欧拉公式表示数值解:$$y_{n+1} = y_n + hf(t_n, y_n), \qquad y_0 = y(t_0)$$欧拉法的优点是容易理解和实现,但是由于截取低阶项且使用的单步法,所以误差较大,精度较低,在具体应用时需要慎重考虑。
二、龙格-库塔法龙格-库塔法(Runge-Kutta method)是一种多步法,比欧拉法更加精确。
龙格-库塔法的主要思想是使用不同的插值多项式来计算近似解,并且将时间步长分解,每次计算需要多次求解。
以下简要介绍二阶和四阶龙格-库塔法。
二阶龙格-库塔法将时间步长 h 分解成两步 h/2,得到近似解表达式:$$\begin{aligned} k_1 &= hf(t_n, y_n)\\ k_2 &= hf(t_n+h/2,y_n+k_1/2)\\ y_{n+1} &= y_n+k_2+O(h^3)\\ \end{aligned}$$四阶龙格-库塔法四阶龙格-库塔法是龙格-库塔法中应用最为广泛的一种方法,其需要计算的中间值较多,但是具有更高的精度。
第六章 常微分方程初值问题的数值解法_习题课1 .欧拉法的局部截断误差的阶为 。
改进欧拉法的局部截断误差的阶为 。
三阶龙格-库塔法的局部截断误差的阶为 。
四阶龙格-库塔法的局部截断误差的阶为 。
2. 欧拉法的绝对稳定实区域为 。
二阶龙格-库塔法的绝对稳定实区域为 。
三阶龙格-库塔法的绝对稳定实区域为 。
四阶龙格-库塔法的绝对稳定实区域为 。
3.求解初值问题欧拉法的局部截断误差是( );⎩⎨⎧=='00y x y y x f y )(),(改进欧拉法的局部截断误差是( );四阶龙格-库塔法的局部截断误差是( ). (A)O (h 2) (B)O (h 3) (C)O (h 4) (D)O (h 5)4. 改进欧拉法的平均形式公式是( ).(A)⎪⎪⎪⎩⎪⎪⎪⎨⎧+21=+=+=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 (B)⎪⎪⎪⎩⎪⎪⎪⎨⎧+21=+=+=1+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(C)⎪⎪⎪⎩⎪⎪⎪⎨⎧+2=+=+=1+1+)(),(),(c p k p k k c k k k p y y h y y x hf y y y x hf y y (D)⎪⎪⎪⎩⎪⎪⎪⎨⎧+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 答案:(D)5. 解微分方程初值问题的方法,( )的局部截断误差为O (h 3). (A) 欧拉法 (B)改进欧拉法 (C)三阶龙格-库塔法 (D) 四阶龙格-库塔法 答案:(B)解答:改进欧拉法的局部截断误差是二阶精度,O(h3)。
6. 对Euler 公式推导局部截断误差及其主项,并指出该方法是几阶方法。
解:其局部截断为))(,()()(11n n n n n x y x hf x y x y T --=++ 对在处作Talor 展开,有)(1+n x y n x )()(2)()()(321h O x y h x y h x y x y n n n n +''+'+=+而且,因此其局部截断为 ))(,()(n n n x y x f x y =' ))(,()()(11n n n n n x y x hf x y x y T --=++)()(2)()(32h O x y h x y h x y n n n +''+'+=)()(n n x y h x y '--)()(232h O x y h n +''=)(2h O =所以,显式Euler 方法是1阶方法,其截断误差的主项是)(22n x y h ''。
7.对隐式Euler 公式推导局部截断误差及其主项,并指出该方法是几阶方法。
解:其局部截断为))(,()()(1111++++--=n n n n n x y x hf x y x y T 对在处作Talor 展开,有)(1+n x y n x )()(2)()()(321h O x y h x y h x y x y n n n n +''+'+=+而且,也在处作Talor 展开,有 ))(,()(111+++='n n n x y x f x y n x )()()()(21h O x y h x y x y n n n +''+'='+所以,因此其局部截断为))(,()()(1111++++--=n n n n n x y x hf x y x y T)()(2)()(32h O x y h x y h x y n n n +''+'+=)()()()(32h O x y h x y h x y n n n +''-'-- )()(232h O x y h n +''-=)(2h O =所以,隐式Euler 方法也是1阶方法,其截断误差的主项是)(22n x y h ''-。
8.对梯形公式推导局部截断误差及其主项,并指出该方法是几阶方法. 解:其局部截断为))](,())(,([2)()(1111+++++--=n n n n n n n x y x f x y x f hx y x y T对在处作Talor 展开,有)(1+n x y n x )()(6)(2)()()(4321h O x y h x y h x y h x y x y n n n n n +'''+''+'+=+而且,))(,()(n n n x y x f x y ='))(,()(111+++='n n n x y x f x y ,对)(1+'n x y 也在处作Talor 展开,有n x )()(2)()()(321h O x y h x y h x y x y n n n n +'''+''+'='+所以,因此其局部截断为))](,())(,([2)()(1111+++++--=n n n n n n n x y x f x y x f hx y x y T)()(6)(2)()(432h O x y h x y h x y h x y n n n n +'''+''+'+=)()(12)(2)(2)(2)(432h O x y h x y h x y h x y h x y n n n n n +'''-''-'-'--)()(1243h O x y h n +'''-=)(3h O =所以,梯形公式是2阶方法,其截断误差的主项是)(123n x y h '''-=。
9.用欧拉法解初值问题,取步长h =0.2.计算过程保留4位小数.⎩⎨⎧1=060≤≤0--='2)().(y x xy y y 解: h =0.2, f (x )=-y -xy 2.首先建立欧拉迭代公式)2,1,0)(4(2.0),(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.800 0当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.614 4,有 y (0.6)≈y 3=0.2×0.614 4×(4-0.4×0.4613)=0.800 010.用欧拉预报-校正公式求解初值问题,取步长h =0.2,计算y (0.2),y (0.4)的近似值,计算过程保留5位小数.l ⎩⎨⎧1=10=++'2)(sin y x y y y 解 步长h =0.2, 此时f (x ,y )=-y -y 2sin x . 欧拉预报-校正公式为:⎪⎩⎪⎨⎧++=+=++++)],(),([2),(1111k k k k k k k k k k y x f y x f hy y y x hf y y 校正值预报值 有迭代公式:⎪⎪⎪⎩⎪⎪⎪⎨⎧+--=--+--+=-=--+=++++++++)sin (1.0)sin 1.09.0()]sin ()sin [(2)sin 2.08.0()sin (121112112121k k k k k k k k k k k k k k k k k k k k k k x y y x y y x y y x y y h y y x y y x y y h y y 校正值预报值当k =0,x 0=1, y 0=1时,x 1=1.2,有631710=11⨯02-80⨯1=20-80=0001.)sin .()sin ..(x y y y715490=21631710+63171010-1⨯1⨯10-90⨯1=≈2121.).sin ..(.)sin ..().(y y 当k =1,x 1=1.2, y 1=0.71549时,x 2=1.4,有476970=21715490⨯02-80⨯715490=20-80=1112.).sin ..(.)sin ..(x y y y).sin ..(.).sin ...(.).(41476970+47697010-21⨯715490⨯10-90⨯715490=≈4122y y =0.5260811.用改进的欧拉法平均公式,取步长h =0.1,求解初值问题⎩⎨⎧=≤≤+='1)0()2.00(y x y x y 计算过程保留4位小数. 解 首先建立迭代格式:⎪⎪⎪⎩⎪⎪⎪⎨⎧+++++=+=++++=+=++=+=++++k k k c p k kk k p k k c k k k k k p y h h hx x h h y y y x h hx h h y y x hf y y h y hx y x hf y y )21(])1([21][21)1(),()1(),(2112121 当k =0时,x 0=0,y 0=1,x 1=0.1,有11.11)21.01.01(]1.01.00)1.01(1.0[2121=⨯+++⨯+⨯+⨯=y当k =1时,x 1=0.1, y 1=1.11, x 2=0.2,有1242.111.121.01.01(]2.01.01.0)1.01(1.0[2122=⨯+++⨯+⨯+⨯=y12.(1)取步长h=0.2,用改进Euler 法求解常微分方程初值问题22,(0)y x y y '=++=0在x=0.6上的解。
(2)对改进Eluer 格式进行误差分析。
解:(1)改进Euler 公式⎪⎩⎪⎨⎧++=+=++++))~,(),((2),(~1111i i i i i i i i i i y x f y x f h y y y x hf y y 分别将x=0.2, 0.4,0.6,代入上式中计算即可!(2)改进欧拉格式11121[]2(,)(,i i i i i i h 2)y y k k k f x y k f x h y hk +⎧=++⎪⎪=⎨⎪=++⎪⎩2341()()()()()()()2!3!i i i i i i h h y x y x h y x hy x y x y x O h +''''''∴=+=++++1211222211(,)()(,)(,)(,)(,1[(,)2(,)(,)]()2!i i i i i i i x i i y i i xxi i xy i i yy i i k f x y y x k f x h y hk f x y hf x y hk f x y h f x y h k f x y h k f x y O h '==''=++=++''''''++++3)又1()(,)(,)()(,)(,)i x i i y i i i x i i y i i y x f x y f x y y x f x y f x y k '''''''=+=+代入11[2i i h 2]y y k k +=++,整理后 31()()(i i )y x y x O h +-=13. (1)取步长为0.1,试用欧拉公式求解常微分方程初值问题⎩⎨⎧=-+='1)0(1y y x y 在x =0.4处的近似值(计算过程保留3位小数);(2) 试用泰勒展式估计改进欧拉公式的局部截断误差。