第10章_常微分方程初值问题的数值方法
常微分方程的初值问题

常微分方程的初值问题常微分方程是研究自变量(通常是时间)及其导数之间关系的数学分支。
它在物理、化学、生物学等学科中都有广泛应用,因此被视为数学的基础学科之一。
其中的求解方法之一便是初值问题。
初值问题是指对于一个已知的微分方程,给定初始条件的问题。
初始条件通常包括一个或多个自变量和导数值,根据这些条件可以求解出微分方程的解析解或近似解。
此外,初始条件还可以帮助我们理解微分方程的性质和行为。
举个例子,我们考虑一个简单的问题:假设一个物体在空气中运动,其速度随时间的变化可以用常微分方程来描述。
则其方程可以写作:m * dv/dt = mg - kv^2其中m为物体质量,g为重力加速度,k是空气阻力系数,v表示速度。
将初始条件加入其中,例如初始速度v0为0,则此时可以解出运动中物体的速度v(t)对时间的表达式。
对于初值问题的求解方法,数值和解析方法皆有。
解析方法主要是利用微积分和代数技巧,将微分方程推导为一般的解析表达式。
然而,这种方法需要一定的条件和技巧,因而在实际问题中应用范围较为有限。
数值方法则是更为通用和普遍的求解方法。
在此方法中,将微分方程转化为差分方程,即将导数近似为差分式,再结合初始条件用数值计算方法进行求解,得到问题的数值解。
这种方法的优点在于求解过程简单明了,且由于近似误差可以任意小,因此可得出足够精确的解。
常用的数值方法有欧拉法、龙格-库塔法等。
其中欧拉法是最简单的一种数值方法,其核心思想是用线性近似代替导数,即将微分方程中的导数写成差商形式,于是可以得到如下迭代公式:y(i+1)=y(i)+hf(y(i), t(i))其中y(i)表示函数解在i时刻的估计值,t(i)表示时间,h为时间步长,f(y,t)为微分方程右端函数。
通过这种迭代方法即可用简单的计算机程序得到一个数值解。
在使用数值方法求解初值问题时,需注意初始条件的选取。
例如,在上述物体的运动例子中,我们可以选取物体在某一位置的速度为初始速度,而这个位置则可以是重心位置、发射点等。
求常微分方程的数值解

求常微分方程的数值解一、背景介绍常微分方程(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)$。
微分方程初值问题的数值解法

积分法:
yk 1 yk h f ( xk , yk ) y ( x0 ) y0
积分项利用矩形公式计算
(1) y( xk 1 ) y( xk )
xk 1
xk
f (t , y(t ))dt
(★)
xk 1
xk
f (t , y(t ))dt h f ( xk , yk ) y( xk 1 ) y( xk ) h f ( xk , yk )
引言
初值问题的数值解法:求初值问题的解在一系列节点的值 y ( xn )的近似值 yn 的方法.本章数值解法的特点:都是采用“步进 式”,即求解过程顺着节点排列的次序一步步向前推进. 常微分方程初值问题: dy f ( x, y ), x [a, b] dx y ( x0 ) y0
替 f (x , y)关于 y 满足Lipschitz条件. 除了要保证(1)有唯一解外,还需保证微分方程本身是稳定的,即 (1)的解连续依赖于初始值和函数 f (x , y). 也就是说, 当初始值 y0 及函数 f (x , y)有微小变化时, 只能引起解的微小变化.
注: 如无特别说明,总假设(1)的解存在唯一且足够光滑. 在 f 连续有界, 则 f (x , y)对变量 y 可微的情形下, 若偏导数 y 可取L为
也称折线法 x
2. 梯形法
若采用梯形公式计算(★)中的积分项,则有 h y ( xk 1 ) y ( xk ) [ f ( xk , y ( xk )) f ( xk 1 , y ( xk 1 ))] 2 h yk 1 yk [ f ( xk , yk ) f ( xk 1 , yk 1 )] 2 称之为梯形公式.这是一个隐式公式,通常用迭代法求解.具体做 法: (0) (0) 先用Euler法求出初值 yk ,1 即 ,将其代入梯形公式 yk 1 yk h f ( xk , yk ) 的右端,使之转化为显式公式,即 h ( l 1) (l ) yk 1 yk [ f ( xk , yk ) f ( xk 1 , yk (☆ ) 1 )] 2
数值计算中的常微分方程初值问题

数值计算中的常微分方程初值问题常微分方程是描述许多自然规律和现象的数学方法之一,常常在科学研究和工程应用中被广泛应用。
求解常微分方程的数值算法称为数值方法,这些方法用于求解微分方程的初始值问题(Initial Value Problem,简称IVP)。
本文将讨论常微分方程初值问题以及数值方法的应用。
1. 常微分方程初值问题常微分方程初值问题是一类形如$y^{\prime}=f(t,y),y(t_0)=y_0$的微分方程。
其中,$f(t,y)$是已知的函数,$y^{\prime}$表示$y$对$t$的导数,$y_0$和$t_0$是已知的初始条件。
将微分方程的解表示为$y=y(t)$,则其在$t=t_0$处的值为$y(t_0)=y_0$。
对于一个给定的常微分方程初值问题,我们需要求出其解$y=y(t)$。
常微分方程的解是一类内禀函数,通常没有解析表达式。
因此,求解微分方程的目标是得到一个数值近似解,以使得这个近似解能够满足应用上的需要。
但是,求解微分方程时需要注意最小化误差,以充分利用计算机资源和减小不确定性。
2. 数值方法数值方法是一种使用数值计算技术快速求解微分方程的方法。
常见的数值方法包括显式欧拉法,向后欧拉法,中点法,龙格–库塔法等。
2.1 显式欧拉法显式欧拉法是最简单的求解微分方程的数值方法之一,它通过计算初始值函数的斜率来求解下一个点的值,使得下一个点的值可读性更高。
具体来说,显式欧拉法使用前项差分公式:$$y_{n+1}=y_n+hf(t_n,y_n)$$其中$t_n=n \cdot h$是离散时间步($h$是时间步长)。
显式欧拉法的误差随时间步长变小。
但显式欧拉法的缺点是它难以处理比较复杂的微分方程,因为这可能需要使用较小的时间步长。
此外,显式欧拉法可能产生的数值不稳定性也是一个挑战。
2.2 龙格-库塔法龙格-库塔方法是一种经典的提高微分方程数值解精度的数值方法。
龙格-库塔法是一类迭代方法,它使用多次计算初始值函数的斜率,以生成更准确的导数值。
常微分方程的数值解法

常微分方程的数值解法常微分方程是研究变量的变化率与其当前状态之间的关系的数学分支。
它在物理、工程、经济等领域有着广泛的应用。
解常微分方程的精确解往往十分困难甚至不可得,因此数值解法在实际问题中起到了重要的作用。
本文将介绍常见的常微分方程的数值解法,并比较其优缺点。
1. 欧拉方法欧拉方法是最简单的数值解法之一。
它基于近似替代的思想,将微分方程中的导数用差商近似表示。
具体步骤如下:(1)确定初始条件,即问题的初值。
(2)选择相应的步长h。
(3)根据微分方程的定义使用近似来计算下一个点的值。
欧拉方法的计算简单,但是由于误差累积,精度较低。
2. 改进欧拉方法为了提高欧拉方法的精度,改进欧拉方法应运而生。
改进欧拉方法通过使用两个点的斜率的平均值来计算下一个点的值。
具体步骤如下:(1)确定初始条件,即问题的初值。
(2)选择相应的步长h。
(3)根据微分方程的定义使用近似来计算下一个点的值。
改进欧拉方法相较于欧拉方法而言,精度更高。
3. 龙格-库塔法龙格-库塔法(Runge-Kutta)是常微分方程数值解法中最常用的方法之一。
它通过迭代逼近精确解,并在每一步中计算出多个斜率的加权平均值。
具体步骤如下:(1)确定初始条件,即问题的初值。
(2)选择相应的步长h。
(3)计算各阶导数的导数值。
(4)根据权重系数计算下一个点的值。
与欧拉方法和改进欧拉方法相比,龙格-库塔法的精度更高,但计算量也更大。
4. 亚当斯法亚当斯法(Adams)是一种多步法,它利用之前的解来近似下一个点的值。
具体步骤如下:(1)确定初始条件,即问题的初值。
(2)选择相应的步长h。
(3)通过隐式或显式的方式计算下一个点的值。
亚当斯法可以提高精度,并且比龙格-库塔法更加高效。
5. 多步法和多级法除了亚当斯法,还有其他的多步法和多级法可以用于解常微分方程。
多步法通过利用多个点的值来逼近解,从而提高精度。
而多级法则将步长进行分割,分别计算每个子问题的解,再进行组合得到整体解。
常微分方程初值问题的数值解法中三种算法的比较

常微分方程初值问题的数值解法中三种算法的比较
常微分方程初值问题的数值解法是数学分析中的一个重要的研究内容,众多的
算法都有助于我们更好地求解一般的初值问题,在这里我们将介绍常微分方程初值问题的三种基本算法,它们是欧拉法、改进欧拉法以及四阶龙格-库塔法。
欧拉法是常微分方程初值问题中最常用的算法,他是一种简洁而又灵活的方法,其基本思想是根据给定的常微分方程和初值,通过积分形式求解精确解,此方法解决的问题比较简单,但它的误差公式与时间步长的N次方有关,误差较大,而且容易出现严重的误差误差,当时间步长To增大时会出现误差振荡。
改进欧拉法是弥补欧拉法缺陷的一种优化算法,它使用线性插值,代替欧拉法
用积分形式计算出来的结果,从而更准确地求出结果,且误差降低,由于它对动态系统的误差有一定的抑制,使得它的运算误差相对于欧拉法是高准确度的,但在某些特殊情况下仍然可能出现误差波动的情况。
四阶龙格-库塔法是在现实生活中最常用的数值解法。
它把问题分解成5种不
同形式的积分公式,并分别交由5个层次的方法来解决,仔细把握每一步的运算,把数值舍入后再运算,虽然该法运算量大,但它的准确性更高,误差相对于其它两种方法要小得多,且具有良好的精度稳定性,具有很好的鲁棒性和适应性,可以很好地用于对解初值问题作出估计和预测。
综上,这三种数值解法都有自身的特点,欧拉法计算简单,但误差较大;改进
欧拉法的精度和误差抑制能力更强;四阶龙格-库塔法的算术精度更高,出现误差
波动的概率最低,在可靠性方面更加准确。
因此,应用的时机对于三种算法的选择就显得尤为重要。
常微分方程初值问题的数值解法
常微分方程初值问题数值解法初值问题:即满足初值条件的常微分方程的解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乘以斜率;而这个斜率用区间上的端点和中点的斜率的算数平均来逼近。
一阶常微分方程初值问题的数值解fortron
一阶常微分方程初值问题的数值解是微分方程数值求解中的基础问题,对于工程、物理、生物等领域的科学计算和数值模拟具有重要意义。
本文将从常微分方程初值问题的数值解的基本原理和数值方法入手,详细介绍使用Fortran语言进行一阶常微分方程初值问题的数值解的实现过程和注意事项。
1. 常微分方程初值问题的数值解基本原理常微分方程初值问题的数值解是通过数值方法来逼近微分方程的解。
对于一阶常微分方程初值问题:dy/dx = f(x, y)y(x0) = y0其中,f(x, y)是给定的函数,y(x0) = y0是给定的初值条件。
求解该初值问题即是要找到一个函数y(x)近似地满足该微分方程,并且在点x = x0处与给定的初值条件相符。
2. 常微分方程初值问题的数值解的数值方法常见的数值方法包括欧拉方法、改进的欧拉方法、四阶龙格-库塔方法等。
其中,四阶龙格-库塔方法是最常用和最经典的数值方法之一。
该方法通过取若干个函数值点上的斜率的加权平均值来逼近微分方程的解,具有较高的数值精度和稳定性。
3. 使用Fortran语言实现一阶常微分方程初值问题的数值解Fortran是一种古老但经典的科学计算语言,以其高效的数值计算和科学工程计算而闻名。
下面将结合Fortran语言的特点,介绍如何使用Fortran语言实现一阶常微分方程初值问题的数值解。
(1)定义常微分方程的函数f(x, y)在Fortran程序中,首先需要定义常微分方程的函数f(x, y),并将其定义为一个子程序或函数。
这里以一个简单的一阶线性常微分方程为例:f(x, y) = x + y则在Fortran程序中可以这样定义:```function f(x, y)real :: x, y, ff = x + yend function f```(2)实现四阶龙格-库塔方法在Fortran程序中,可以实现四阶龙格-库塔方法来数值解常微分方程初值问题。
具体做法是按照龙格-库塔方法的算法,在程序中编写相应的代码实现。
常微分方程初值问题的数值积分法
y( xn1) y( xn ) hfh ( xn , y( xn )) Rh ( xn ),
并且当 h 0时,
yh,0
y(x0 )
h1 max xIh
Rh (x)
0,
(7.4.2)
则称(7.4.1) 式为初值问题(7.1.1)的一个相容近似 ,
或称此格式满足相容条件即(7.4.2)式。
若
Rh (xn ) O(h p1), yh,0 y(x0) O(h p )(h 0)
a x0 x1 L xN1 xN b,
令 hn xn1 xn,称为积分网格的步长。
用y0 , y1, y2 , , yN 表示精确解 y(x)在节点 x0 , x1, x2 , , xN 上函数值 y( x0 ), y( x1), y( x2 ), , y( xN )的近似值。
对给定的数值积分法,各个 yn 是按某一递推算法确 定的。若在计算 yn1 时只用到已求出的 y0, y1,L , yn中的 yn ,而无须使用其余值 y0, y1,L , yn1 中的任何一个, 则称此法为单步法,否则,称之为多步法。
xn
的右端积分中用梯形公式,则得
yn1
yn
h 2
[
f
(
xn
,
yn
)
f (xn1, yn1)],
n 0,1,L
称该递推公式为梯形方法。
梯形公式
b f (x)dx (b a) ( f (a) f (b))
a
2
梯形方法
yn1
yn
h 2
[
f
( xn
,
yn
)
f (xn1, yn1)],
n 0,1,L
7.2 几个简单的数值积分法
求解常微分方程初值问题的中点公式
一、概述求解常微分方程初值问题是微积分学中一个重要的问题,常微分方程的数值解法在科学工程计算中有着广泛的应用。
其中,中点公式是一种常用的数值解法之一,本文将对中点公式进行详细介绍和求解方法。
二、常微分方程初值问题的定义常微分方程初值问题是指给定一个微分方程和一个初始条件,在指定的初始条件下求解微分方程的解。
其中,微分方程通常是一阶或高阶的常微分方程,而初始条件则是未知函数在某一点的值和导数值。
三、中点公式的定义中点公式是一种常见的数值解法,用于求解常微分方程初值问题。
它是基于泰勒展开式得到的近似解,通过迭代计算来逼近精确解。
中点公式的基本思想是利用当前点和前一点的导数值来逼近下一点的函数值,从而计算出微分方程的近似解。
四、中点公式的推导与计算过程1. 扩展泰勒展开式我们需要利用泰勒展开式对未知函数进行近似展开,一般来说,我们会选择一阶或者二阶的泰勒展开式,然后将展开式进行求和得到一个近似解。
2. 利用迭代计算在得到展开式的近似解之后,我们可以通过迭代计算的方式不断逼近精确解,这通常需要使用计算机进行数值计算处理。
3. 计算误差在实际应用中,我们还需要对中点公式得到的解进行误差分析,以确保所得解的精确性和可靠性。
五、中点公式的数学原理中点公式是基于泰勒展开式得到的近似解,其数学原理主要包括以下几点:1. 利用当前点和前一点的导数值来近似下一点的函数值;2. 通过迭代计算不断逼近真实解;3. 计算误差以确保解的精确性和可靠性。
六、中点公式的优缺点分析中点公式作为常微分方程初值问题的一种数值解法,具有如下优缺点:1. 优点:a. 简单易用,计算速度快;b. 适用于一些数值解法不稳定的情况;c. 精度较高。
2. 缺点:a. 对初始条件敏感,初始条件的选取会影响求解结果;b. 在某些情况下可能会产生数值不稳定的问题;c. 无法处理高阶微分方程。
七、中点公式在实际应用中的案例分析下面通过一个具体的案例来展示中点公式在实际应用中的情况。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
x1
yn1 yn h f ( xn , yn ) (n 0,1, 2, ... )
亦称为欧拉折线法
2020/4/4
6
数值计算方法
2. Taylor展开法
将y( xn h)在点xn作Taylor展开
y( xn
h)
y( xn ) hy'( xn )
h2 2!
y''( )
忽略高阶项,取近似值可得到Euler公式
必须满足:| 1 h | 1
2020/4/4
20
数值计算方法
例:考察隐式欧拉法 yn1 yn h yn1
yn1
1 1
h
yn
n1
1 1h
n1
0
可见绝对稳定区域为: | 1 h | 1
Img
0
1
2 Re
注:一般来说,隐式欧拉法的绝对稳定性比同阶的显式法 的好。
2020/4/4
21
stable */。
常数,可以是复数
一般分析时为简单起见,只考虑试验方程 /* test equation */
y y
当步长取为 h 时,将某算法应用于上式,并假设只在初值
产生误差 0 y0 y0 ,则若此误差以后逐步衰减,就称该
算法相对于 h h 绝对稳定,h 的全体构成绝对稳定区域。
满足Lipschitz条件,即存在L>0,使得
Q(x, y, h) Q(x, y, h) L y y
对一切 y和y 成立,则该方法收敛,且有 en O(h p ) 由该定理可知整体截断误差总比局部截断误差低一阶
对改进的Euler法, Q( x, y, h) 1 f ( x, y) f ( x h, y hf ( x, y))
中心差商近似导数
y( x1 )
y( x2 ) y( x0 ) 2h
y( x2 ) y( x0 ) 2h f ( x1 , y( x1 ))
yn1 yn1 2h f (xn , yn ) n 1, 2,L
x0
x1
x2
改进欧拉法 /* modified Euler’s method */
Step 1: 先用显式欧拉公式作预测,算出 yn1 yn h f ( xn, yn)
例:求解常微分方程初值问题 y' y x 1 y(0) 1
取步长h 0.1,计算到x 0.5
x0
解 : f ( x, y) y x 1,由Euler公式
yn1 yn h( yn xn 1)
代入h 0.1, 有yn1 0.9 yn 0.1( xn 1), 依次算得果如下:
dy f ( x, y) x [a, b] dx y(a) y0
(10-1)
只要 f (x, y) 在[a, b] R1 上连续,且关于 y 满足 Lipschitz 条
件,即存在与 x, y 无关的常数 L 使 | f (x, y1) f (x, y2) | L | y1 y2 | 对任意定义在 [a, b] 上的 y1(x) 和 y2(x) 都成立,则上述IVP存 在唯一解。
Step 2: 再将 yn1 代入隐式梯形公式的右边作校正,得到
yn1
yn
h 2
[
f
(
xn,
yn)
f ( xn1 ,
yn1 )]
2020/4/4
10
数值计算方法
yn1
yn
h 2
f
(xn
,
yn
)
f
xn1 ,
yn
hf
(xn ,
yn
)
(n 0, 1, 2L )
注:此法亦称为预测-校正法 /* predictor-corrector method */。一方面它有较高精度,同时可以看 到它是个单步递推格式,比隐式公式的迭代求 解过程简单。后面将看到,它的稳定性高于显 式欧拉法。
y( x1 )
y( x1 ) h
y( x0 )
x0
x1
y( x1 ) y0 h f ( x1, y( x1 ))
yn1 yn h f ( xn1, yn1 ) (n 0,1, 2, ... )
由于未知数 yi+1 同时出现在等式的两边,不能直接得到,故 称为隐式 /* implicit */ 欧拉公式,而前者称为显式 /* explicit */ 欧拉公式。
例:就初值问题
y y
y(0)
y0
考察欧拉显式格式的收敛性。
解:该问题的精确解为 y( x) y0e x 欧拉公式为 yn1 yn h yn (1 h) yn
lhimy0n(1(1 h)1/ hh)nye0
对任意固定的 x = xn = nh ,有
yn y0 (1 h)xn / h y0[(1 h)1/ h ] xn
2020/4/4
5
数值计算方法
二、构造初值问题数值方法的基本途径
以Euler法为例说明构造IVP问题数值方法的三种基本途径
1. 数值微分法,用差商代替微商
向前差商近似导数
y( x0 )
y( x1 ) h
y( x0 )
y( x1 ) y( x0 ) hy( x0 ) y0 h f ( x0 , y0 ) 记为 y1 x0
Q(x, y, h) Q(x, y, h) L(1 h/ 2) y y
限定h即可知Q满足Lipschitz条件,故而改进的Euler法收敛.
2020/4/4
17
数值计算方法
3. 稳定性
例:考察初值问题
y( x) 30 y( x)在区间[0, 0.5]上的解。
y(0) 1
分别用欧拉显、隐式格式和改进的欧拉格式计算数值解。
2020/4/4
4
数值计算方法
n0 1 2 3
4
5
xn 0 0.1 0.2 0.3 0.4
0.5
yn 1.0 1.0 1.01 1.029 1.0561 1.09049
直接解微分方程可得精确解 : y f ( x) x ex , 故x5 0.5, y(0.5) 1.106531
由此可见,Euler公式的近似值接近方程的精确值.
数值计算方法
第十章 常微分方程初值问题的数值解法
第一节 求解初值问题数值方法的基本原理
第二节 高精度的单步法 第三节 线性多步法 第四节 一阶微分方程组的解法
第五节 边值问题的打靶法和差分法
2020/4/4
1
数值计算方法
第一节 求解初值问题数值方法的基本原理
一、初值问题的数值解
考虑一阶常微分方程的初值问题 /* Initial-Value Problem */:
例:用尤拉公式和改进的尤拉公式解初值问题
y'
y
2x y
y(0) 1.
(0 x 1);
2020/4/4
11
数值计算方法
解:取步长h 0.1,
尤拉公式为:
yn1
yn
h( yn
2 xn ). yn
y
p
yn
h( yn
2 xn ); yn
改进的尤拉公式为: yc
yn
h( y p
2 xn1 ); yp
则有
xn1 xn
f ( x, y)dx
h f ( xn , yn )
yn1 yn h f ( xn , yn ) (n 0,1, 2, ... )
2020/4/4
8
数值计算方法
三、Euler法的改进及梯形公式
隐式欧拉法 /* implicit Euler method */
向后差商近似导数
y0e xn y( xn )
✓
2020/4/4
15
数值计算方法
关于整体截断误差与局部截断误差的关系,有如下定理 定理:对IVP(10.1)式的单步法 yn1 yn hQ( xn , yn , h) ,
若局部截断误差为O(hp1) ( p 1) ,且函数 Q( xn , yn , h) 对y
yn1
1 2
( yp
yc ).
计算结果略。
2020/4/4
12
数值计算方法
四、单步法的误差分析和稳定性
1. 整体截断误差和局部截断误差 整体截断误差:数值解 yn和精确解 y( xn ) 之差
en y( xn ) yn
整体截断误差除与 xn步计算有关外,还与 xn1, , x1的计算
有关 分析计算中的某一步,显式单步法的一般形式可写为:
到第n步没有误差,即 yn y(xn ) ,则
En1 y( xn1) yn1 y( xn1) y( xn ) hQ( xn , y( xn ), h)
称为单步法在点 xn1 处的局部截断误差。
定义 若某算法的局部截断误差为 En1 O(h p1) ,则称该
算法有p 阶精度。
欧拉法的局部截断误差,由Taylor展开:
一般先用显式计算一个初值,再迭代求解。
2020/4/4
9
数值计算方法
梯形公式 /* trapezoid formula */ — 显、隐式两种算法的平均
yn1
yn
h 2
[f (xn , yn )
f (xn1, yn1 )]
(n 0,1, 2 L )
中点欧拉公式 /* midpoint formula */
数值解
求解(10-1)最基本的方法是单步法
单步法:从初值 y0 开始,依次求出 y1, y2 , ,后一步的值 yn1 只依靠前一步的 yn
典型的单步法是Euler(欧拉)方法,其计算格式是:
yn1 yn h f ( xn , yn ) (n 0,1, 2, ... )