第十一章 常微分方程数值解1
常微分方程的数值解
f ( x, y1 ) f ( x, y2 ) L y1 y2
(其中 L 为 Lipschitz 常数)则初值问题( 1 )存 在唯一的连续解。
求问题(1)的数值解,就是要寻找解函数在一 系列离散节点x1 < x2 <……< xn < xn+1 上的近似 值y1, y 2,…,yn 。 为了计算方便,可取 xn=x0+nh,(n=0,1,2,…), h称为步长。
(1),(2)式称为初值问题,(3)式称为边值问题。 在实际应用中还经常需要求解常微分方程组:
f1 ( x, y1 , y2 ) y1 ( x0 ) y10 y1 (4) f 2 ( x, y1 , y2 ) y2 ( x0 ) y20 y2
本章主要研究问题(1)的数值解法,对(2)~(4)只 作简单介绍。
得 yn1 yn hf ( xn1 , yn1 )
上式称后退的Euler方法,又称隐式Euler方法。 可用迭代法求解
二、梯形方法 由
y( xn1 ) y( xn )
xn1 xn
f ( x, y( x))dx
利用梯形求积公式: x h x f ( x, y( x))dx 2 f ( xn , y( xn )) f ( xn1 , y( xn1 ))
常微分方程的数言 简单的数值方法 Runge-Kutta方法 一阶常微分方程组和高阶方程
引言
在高等数学中我们见过以下常微分方程:
y f ( x, y, y) a x b y f ( x, y ) a x b (2) (1) (1) y ( x ) y , y ( x ) y 0 0 0 0 y ( x0 ) y0 y f ( x, y, y) a x b (3) y(a) y0 , y(b) yn
数值分析常微分方程数值解法
第8页/共105页
➢ 数值积分方法(Euler公式)
设将方程 y=f (x, y)的两端从 xn 到xn+1 求积分, 得
y( xn1) y( xn )
xn1 f ( x, y( x))dx :
xn
xn1 F ( x)dx
xn
用不同的数值积分方法近似上式右端积分, 可以得到计算 y(xn+1)的不同的差分格 式.
h2 2
y''( )
Rn1
:
y( xn1)
yn1
h2 2
y''( )
h2 2
y''( xn ) O(h3 ).
局部截断误差主项
19
第20页/共105页
➢ 向后Euler法的局部截断误差
向后Euler法的计算公式
yn1 yn hf ( xn1, yn1 ), n 0, 1, 2,
定义其局部截断误差为
y 计算 的n递1 推公式,此类计算格式统称为差分格式.
3
第4页/共105页
数值求解一阶常微分方程初值问题
y' f ( x, y), a x b,
y(a)
y0
难点: 如何离散 y ?
➢ 常见离散方法
差商近似导数 数值积分方法 Taylor展开方法
4
第5页/共105页
➢ 差商近似导数(Euler公式)
(0 x 1)
y(0) 1.
解 计算公式为
yn1
yn
hfn
yn
h( yn
2xn ), yn
y0 1.0
n 0, 1, 2,
取步长h=0.1, 计算结果见下表
13
常微分方程的数值解与解析解
一、 常微分方程的解析解常微分方程的解析解也就是常微分方程的精确解,也称为常微分方程的符号解;一般可理解为求微分方程的通解或者特解的解析式或表达式;但只有少数的微分方程存在解析解。
在MA TLAB 中,由函数dsolve()求解常微分方程(组)的解析解,其具体格式如下: X=dsolve(‘方程1’,‘方程2’,…‘方程n ’,‘初始条件’,‘自变量’)函数dsolve 用来解符号常微分方程、方程组,如果没有初始条件,则求出通解,如果有初始条件,则求出特解。
例1:求解常微分方程1dy dx x y =+的MA TLAB 程序为:dsolve('Dy=1/(x+y)','x'),注意,系统缺省的自变量为t ,因此这里要把自变量写明。
结果为:-lambertw(-C1*exp(-x-1))-x-1其中:Y=lambertw(X)表示函数关系Y*exp(Y)=X 。
例2:求解常微分方程2'''0yy y -=的MA TLAB 程序为:Y2=dsolve('y*D2y-Dy^2=0’,’x’) 结果为:Y2 =[ exp((x+C2)/C1)][ C2]我们看到有两个解,其中一个是常数。
例3:求常微分方程组253t tdx x y e dt dy x y e dt ⎧++=⎪⎪⎨⎪--=⎪⎩通解的MA TLAB 程序为:[X,Y]=dsolve('Dx+5*x+y=exp(t),Dy-x-3*y=exp(2*t)','t')例4:求常微分方程组020210cos ,224,0t t t dx dy x t x dt dt dx dy y e y dt dt =-=⎧+-==⎪⎪⎨⎪++==⎪⎩通解的MA TLAB 程序为:[X,Y]=dsolve('Dx+2*x-Dy=10*cos(t),Dx+Dy+2*y=4*exp(-2*t)','x(0)=2','y(0)=0')二、 常微分方程的数值解在生产和科研中所处理的微分方程往往很复杂且大多得不出一般解。
求常微分方程的数值解
求常微分方程的数值解一、背景介绍常微分方程(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 )
微分方程数值解法
微分方程数值解法微分方程数值解法微分方程数值解法【1】摘要:本文结合数例详细阐述了最基本的解决常微分方程初值问题的数值法,即Euler方法、改进Euler法,并进行了对比,总结了它们各自的优点和缺点,为我们深入探究微分方程的其他解法打下了坚实的基础。
关键词:常微分方程数值解法 Euler方法改进Euler法1、Euler方法由微分方程的相关概念可知,初值问题的解就是一条过点的积分曲线,并且在该曲线上任一点处的切线斜率等于函数的值。
根据数值解法的基本思想,我们取等距节点,其中h为步长,在点处,以为斜率作直线交直线于点。
如果步长比较小,那么所作直线与曲线的偏差不会太大,所以可用的近似值,即:,再从点出发,以为斜率作直线,作为的近似值,即:重复上述步骤,就能逐步求出准确解在各节点处的近似值。
一般地,若为的近似值,则过点以为斜率的直线为:从而的近似值为:此公式就是Euler公式。
因为Euler方法的思想是用折线近似代替曲线,所以Euler方法又称Euler折线法。
Euler方法是初值问题数值解中最简单的一种方法,由于它的精度不高,当步数增多时,由于误差的积累,用Euler方法作出的折线可能会越来越偏离曲线。
举例说明:解: ,精确解为:1.2 -0.96 -1 0.041.4 -0.84 -0.933 0.9331.6 -0.64 -0.8 0.161.8 -0.36 -0.6 0.242.0 0 -0.333 0.332.2 0.44 0 0.44通过上表可以比较明显地看出误差随着计算在积累。
2、改进Euler法方法构造在常微分方程初值问题 ,对其从到进行定积分得:用梯形公式将右端的定积分进行近似计算得:用和来分别代替和得计算格式:这就是改进的Euler法。
解:解得:由于 ,是线形函数可以从隐式格式中解出问题的精确解是误差0.2 2.421403 2.422222 0.000813 0.021400.4 2.891825 2.893827 0.00200 0.051830.6 3.422119 3.425789 0.00367 0.094112.0 10.38906 10.43878 0.04872 1.1973通过比较上表的第四列与第五列就能非常明显看出改进Euler方法精度比Euler方法精度高。
常微分方程的数值解法
常微分方程的数值解法1. 引言常微分方程是自变量只有一个的微分方程,广泛应用于自然科学、工程技术和社会科学等领域。
由于常微分方程的解析解不易得到或难以求得,数值解法成为解决常微分方程问题的重要手段之一。
本文将介绍几种常用的常微分方程的数值解法。
2. 欧拉方法欧拉方法是最简单的一种数值解法,其具体步骤如下:- 将自变量的区间等分为n个子区间;- 在每个子区间上假设解函数为线性函数,即通过给定的初始条件在每个子区间上构造切线;- 使用切线的斜率(即导数)逼近每个子区间上的解函数,并将其作为下一个子区间的初始条件;- 重复上述过程直至达到所需的精度。
3. 改进的欧拉方法改进的欧拉方法是对欧拉方法的一种改进,主要思想是利用两个切线的斜率的平均值来逼近每个子区间上的解函数。
具体步骤如下: - 将自变量的区间等分为n个子区间;- 在每个子区间上构造两个切线,分别通过给定的初始条件和通过欧拉方法得到的下一个初始条件;- 取两个切线的斜率的平均值,将其作为该子区间上解函数的斜率,并计算下一个子区间的初始条件;- 重复上述过程直至达到所需的精度。
4. 二阶龙格-库塔方法二阶龙格-库塔方法是一种更为精确的数值解法,其基本思想是通过近似计算解函数在每个子区间上的平均斜率。
具体步骤如下: - 将自变量的区间等分为n个子区间;- 在每个子区间上计算解函数的斜率,并以该斜率的平均值近似表示该子区间上解函数的斜率;- 利用该斜率近似值计算下一个子区间的初始条件,并进一步逼近解函数;- 重复上述过程直至达到所需的精度。
5. 龙格-库塔法(四阶)龙格-库塔法是目前常用的数值解法之一,其精度较高。
四阶龙格-库塔法是其中较为常用的一种,其具体步骤如下:- 将自变量的区间等分为n个子区间;- 在每个子区间上进行多次迭代计算,得到该子区间上解函数的近似值;- 利用近似值计算每个子区间上的斜率,并以其加权平均值逼近解函数的斜率;- 计算下一个子区间的初始条件,并进一步逼近解函数;- 重复上述过程直至达到所需的精度。
常微分方程数值解
常微分方程数值解常微分方程数值解是数学中的一门重要学科,主要研究如何求解常微分方程,在科学计算中有着重要的应用。
常微分方程模型是自然界中广泛存在的现象描述方法,有着广泛的应用领域。
比如,在物理学中,运动中的物体的位置、速度和加速度随时间的关系就可以通过微分方程描述;在经济学中,经济变化随时间的变化也可以用微分方程来描述。
而常微分方程数值解的求解方法则提供了一种快速、高效的计算手段。
一、常微分方程数值解的基本概念常微分方程就是一个描述自变量(通常是时间)与其导数之间关系的方程。
其一般形式如下:$\frac{dy}{dt} = f(y,t)$其中 $f(y,t)$ 是一个已知的函数。
常微分方程数值解就是对于一个常微分方程,对其进行数字计算求解的方法。
常微分方程数值解常使用数值积分的方法来求解。
由于常微分方程很少有解析解,因此数值解的求解方法显得尤为重要。
二、常微分方程数值解的求解方法常微分方程数值解的求解方法很多,以下介绍其中两种方法。
1.欧拉法欧拉法是最简单的一种数值算法,其思想是通过将一个微分方程转化为一个数值积分方程来求解。
其数值积分方程为:$y_{i+1}=y_i+hf(y_i,t_i)$其中 $h$ 为步长,可以理解为每次计算的间隔。
欧拉法的主要缺点是其精度比较低,收敛速度比较慢。
因此,当需要高精度的数值解时就需要使用其他的算法。
2.级数展开方法级数展开法是通过将一个待求解的微分方程进行Taylor级数展开来求解。
通过对Taylor级数展开的前若干项进行求和,可以得到微分方程与其解的近似解。
由于级数展开法的收敛速度很快,因此可以得到相对较高精度的数值解。
但是,当级数过多时,会出现截断误差。
因此,在实际应用中需要根据所需精度和计算资源的限制来选择适当的级数。
三、常微分方程数值解的应用常微分方程数值解在现代科学技术中有着广泛的应用。
以下介绍其中两个应用领域。
1.物理建模常微分方程的物理建模是常见的应用领域。
常微分方程数值解法
而
y ( xn 1 ) y ( xn ) hy( xn ) 1 2 1 1 h y( xn ) h3 y ( xn ) y (4) ( xn ) O(h 5 ) 2! 3! 4!
要使y(xn+1)–yn+1= O(h5) ,比较h的同次幂系数,必 有
h : a 1 1 h : a b c d 1 2 h : a 2b 2d 1 h3 : a 3b 3d 1 h 4 : a 4b 4d 1
yn 1 yn hf ( xn , yn ) h yn 1 yn 2 [ f ( xn , yn ) f ( xn 1 , yn 1 )] (n 0,1, 2,)
局部截断误差为O(h3),是二阶方法.
标准四阶Runge-Kutta公式
1 yn 1 yn ( K1 2 K 2 2 K 3 K 4 ) K hf ( x ,6y ) n n 1 h K1 ) K 2 hf ( xn , yn 2 2 K hf ( x h , y K 2 ) n n 3 2 2 K 4 hf ( xn h, yn K 3 )
用Euler预报—校正格式求解初值问题
dy y y 2 sin x 0 dx y (1.2)及y(1.4)的近似值, 小数点后至少保留5位. 解 设f(x,y)=-y-y2sinx , x0=1,y0=1, xn=x0+nh=1+0.2n, Euler预报—校正格式为
h yn 1 yn [ f ( xn , yn ) f ( xn1 , yn1 )] 2 0.2 yn 1 yn [8 3 yn 8 3 yn 1 ] 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. 多步法和多级法除了亚当斯法,还有其他的多步法和多级法可以用于解常微分方程。
多步法通过利用多个点的值来逼近解,从而提高精度。
而多级法则将步长进行分割,分别计算每个子问题的解,再进行组合得到整体解。
常微分方程数值解法课件
根据选择的步长,确定当 前时刻的数值解的近似值 。
重复上述步骤,直到达到 所需的时间积分区间终止 点。
龙格-库塔方法的误差分析
误差主要来源于时间步长 的离散化,步长越小,误 差越小。
龙格-库塔方法的收敛性 和稳定性取决于所选步长 和步数。
ABCD
机械工程
在机械工程中,机构的动力学行为可以用常微分方程来描 述,如机器人的运动轨迹、机械臂的姿态等,通过数值解 法可以模拟这些机构的运动。
在金融问题中的应用
股票价格模拟
股票价格的变化可以用常微分方程来描述,通过数值解法可以模 拟股票价格的走势,预测未来的股票价格。
期货价格模拟
期货价格的变化也可以用常微分方程来描述,通过数值解法可以 模拟期货价格的走势,预测未来的期货价格。
可以通过增加步数来减小 误差,但会增加计算量。
在实际应用中,需要根据 具体问题选择合适的步长 和步数,以达到精度和计 算效率的平衡。
05
数值解法的应用
在物理问题中的应用
计算物体运动轨迹
通过数值解法求解常微分方程,可以模拟物体的运动轨迹,如行星 运动轨迹、炮弹弹道等。
模拟振动系统
在物理中,许多系统可以用常微分方程来描述,如弹簧振荡器、电 磁振荡器等,通过数值解法可以模拟这些系统的振动行为。
终止条件
当达到预设的精度或迭代次数时,停止迭代并输出结果。
欧拉方法的误差分析
截断误差
由于欧拉方法使用离散化近似 ,因此存在截断误差。这种误 差的大小取决于步长$h$的选
择。
稳定性
欧拉方法对于某些微分方程可 能是不稳定的,这意味着随着 迭代的进行,解可能会发散或
化工应用数学-常微分方程数值解-一阶联立方程组与高阶方程
1
取h 0.5,解1步。
2020/6/19
化工应用数学
8
dC3 dt
k3C22
初值条件:C1(0) C0 , C2 (0) C3 (0) 0
2020/6/19
化工应用数学
2
一阶常微分方程组的初值问题可描述为:
y1' f1( x, y1, y2 , , yn ) y2' f2 ( x, y1, y2 , , yn )
yn' fn ( x, y1, y2 , , yn )
显式欧拉方程
y1(0) 1 y2 (0) 1
uui01yu0 i
hf (xi , ui ) i 0,1,2,
, n 1
y1(1) y1(0) 1 y1' (0)
11
(2x2
y1
y23
)
x0
10 1
y2 (1) y2 (0) 1 y2' (0)
11
(x
y1
-
y2
)
x0
10 1
2020/6/19
y j ( x0 )
y
0 j
j 1,2, , n
一阶:微分方程组的最高阶数为1阶;
常微分:代表只有一个未知数。
2020/6/19
化工应用数学
3
假设有如下一阶常微分方程组,求 y1(1)、y2 (1)、y1(2)、y2 (2),h 1
y1' 2x2 y1 y23
y2' x y1 y2
令 : y y1; y' y2 则: y1' y2 y2' x y1 y2
那么二阶常微分方程初值 问题转化为一阶常微分方 程组初值问题:
常微分方程的数值解
欧拉方法的实现
确定步长和初始值
根据问题的性质和精度要求,选择合适的步长 和初始值。
迭代计算
根据欧拉方法的公式,迭代计算下一个点的值。
终止条件
当达到预设的迭代次数或误差范围时,停止迭代。
常微分方程的应用
总结词
常微分方程在自然科学、工程技术和社会科学等领域有广泛应用。
详细描述
在物理学中,常微分方程可以描述物体的运动规律、电磁波的传播等;在化学中,可以描述化学反应 的动力学过程;在社会科学中,可以用于研究人口增长、经济趋势等。此外,常微分方程还在控制工 程、航空航天等领域有广泛应用。
确定步长和初始值
在应用龙格-库塔方法之前,需要 选择合适的步长和初始值。步长 决定了迭代的精度,而初始值则 用于启动迭代过程。
编写迭代公式
根据选择的步长和初始值,编写 龙格-库塔方法的迭代公式。该公 式将使用已知的函数值和导数值 来计算下一步的函数值。
迭代求解
按照迭代公式进行迭代计算,直 到达到所需的精度或达到预设的 最大迭代次数。
欧拉方法的误差分析
截断误差
由于欧拉方法只使用了微分方程的一次项, 因此存在截断误差。
全局误差
全局误差是实际解与近似解之间的最大偏差。
局部误差
由于每一步都使用了上一步的结果,因此存 在局部误差。
稳定性
欧拉方法是稳定的,但步长和初始值的选择 会影响其稳定性和精度。
04 龙格-库塔方法
龙格-库塔方法的原理
常用的数值解法包括欧拉方法、龙格-库塔方法、改进的欧拉方法、预估 校正方法和步进法等。
常微分方程的数值解法2010
(11)
要使近似公式(8)的局部截断误差为O(h3),则应要求(10)和(11) 式前三项相同:
c1 c 2 1 c2a2 1 / 2 c 2 b 21 1 / 2
以上方程组有无穷多组解,如取c1=c2=1/2,a2=b21=1,近似公 式(8)即为改进的Euler公式:
常微分方程的数值解法
对一阶常微分方程的初值问题,其一般形式是
y f ( x, y ) y (a ) y0 a x b
(1)
在下面的讨论中,假定f(x,y)连续,且关于y满足李
普希兹(Lipschitz)条件,即存在常数L,使得
f ( x, y ) f ( x, y ) L y y
Y(I+1)=Y(I)+(F(X(I),Y(I))+F(X(I+1),Y(I)+H*F(X(I),Y(I))))*H/2
设 x i x 0 ih ( i 1, 2 ,3 , ); y i , z i 为节点上的近似解, 则有改进的Euler格式为
y i 1 y i hf ( x i , y i ) h f ( x i , y i ) f ( x i 1 , y i 1 ) y i 1 y i 2
则初值问题(1)的解必定存在且唯一。
常微分方程的数值解法
所谓数值解法,就是要求问题(1)的解在若干点:
a x 0 x 1 x n 1 x n b
处的近似值yi(i=0,1,2…n)的方法,yi称为问题(1)的数
值解。相邻两个节点的间距
h n x i 1 x i
(5 )
常微分方程常用数值解法综述
第一章绪论1.1 引言常微分方程是现代数学的一个重要分支,是人们解决各种实际问题的有效工具。
微分方程的理论和方法从17世纪末开始发展起来,很快成了研究自然现象的强有力工具,在17到18世纪,在力学、天文、科学技术、物理中,就已借助微分方程取得了巨大的成就。
1864年Leverrer根据这个方程预见了海王星的存在,并确定出海王星在天空中的位置。
现在,常微分方程在许多方面获得了日新月异的应用。
这些应用也为常微分方程的进一步发展提供了新的问题,促使人们对微分方程进行更深入的研究,以便适应科学技术飞速发展的需要。
研究常微分方程常用数值解是数学工作者的一项基本的且重要的工作。
在国内外众多数学家的不懈努力,使此学科基本上形成了一套完美的体系。
微分方程的首要问题是如何求一个给定方程的通解或特解。
到目前为止,人们已经对许多微分方程得出了求解的一般方法。
由于在生产实际和科学研究中所遇到的微分方程问题比较复杂,使这些问题的解即使能求出解析表达式,也往往因计算量太大而难于求出,而对于一些典型的微分方程则可以运用基本方法求出其解析解,并可以根据初值问题的条件把其中的任意常数确定下来。
由于求通解存在许多困难,人们就开始研究带某种定解条件的特解。
首先是Cauchy对微分方程初始解的存在惟一性进行了研究。
目前解的存在惟一性、延拓性、大范围的存在性以及解对初始解和参数的延续性和可微性等理论问题都已发展成熟。
与此同时,人们开始采取各种近似方法来求微分方程的特解,例如求微分方程数值解的Euler折线法、Runge-Kutta法等,可以求得若干个点上微分方程的近似解。
最后,由于当代高科技的发展为数学的广泛应用和深入研究提供了更好的手段。
用计算机结合Matlab软件求方程的精确解、近似解,对解的性态进行图示和定性、稳定性研究都十分方便有效。
本章先介绍常微分的一般概念、导出微分方程的一些典型例子及求解微分方程的思路分析。
从而得到常微分方程的常用数值解法。
常微分方程数值解法-欧拉方法(1)
课题报告题目:常微分方程的数值解法-欧拉方法院 (系):理学院专业:数学与信息专业指导教师:***组员:艾佳欢(组长) 邓云娜柏茜钟岩刘磊2015 年 5 月 11 日常微分方程数值解法-欧拉方法摘要:从常微分方程数值解的基本概念入手,了解最基本的数值解法--欧拉方法。
并利用欧拉方法显式隐式的特点探究如何求解微分方程,以及欧拉方法的误差分析及校正。
关键词:数值解,欧拉方法,误差,校正ABSTRACT: From the basic concept of numerical solution of ordinary differential equations, and understand the most basic numerical solution of euler method. And by using euler explicitly implicit characteristics and explore how to solve differential equations and the error analysis and correction of euler method.KEYWORDS :arithmetic solution,Euler's method,error,revise1.初值问题数值解基本概念初值问题的数值解法,是通过微分方程离散化而给出解在某些节点上的近似值。
在[]b a ,上引入节点{}),,1(,:1100n k x x h b x x x a x k k k n nk k =-==<<<=-=称为步长。
在多数情况下,采用等步长,即),1,0(,n k kh a x nab h k =+=-=。
记准确解为)(x y ,记)(k x y 的近似值为k y ,记),(k k y x f 为k f .一阶常微分方程的初值问题⎩⎨⎧=∈=')2.1()()()1.1(),())(,()(0 x y a y b a x x y x f x y , 若f 在{}〈+∞≤≤=y b x a D ,内连续,且满足Lip 条件:0≥∃L 使2121),(),(y y L y x f y x f -≤-,则初值问题的连续可微解)(x y 在],[b a 上唯一存在,称解)(x y 在节点i x 处的近似值)(i i x y y =为其数值解,该方法称为数值方法。
常微分方程数值解法
2 ! 3 !
n !
u ( t h ) u ( t ) u ( t ) h 1 u ( t ) h 2 1 u ( t ) h 3 1 u ( n ) ( t ) h n O ( h n 1 ) (2)
2 ! 3 !
n !
从(1)得到:
从(2)得到:
u(ti)u(ti1)hu(ti)O(h)
u(ti)u(ti)hu(ti1)O(h)
u ( t h ) u ( t ) u ( t ) h 1 u ( t ) h 2 1 u ( t ) h 3 1 u ( n ) ( t ) h n O ( h n 1 ) (1)
2 ! 3 !
n !
u ( t h ) u ( t ) u ( t ) h 1 u ( t ) h 2 1 u ( t ) h 3 1 u ( n ) ( t ) h n O ( h n 1 ) (2)
>> t_final=100; x0=[0;0;1e-10]; % t_final为设定的仿真终止时
间
>> [t,x]=ode45('lorenzeq',[0,t_final],x0); plot(t,x), >> figure; % 打开新图形窗口
>> plot3(x(:,1),x(:,2),x(:,3)); >> axis([10 42 -20 20 -20 25]); % 根据实际数值手动
u (tn h ) u (tn ) h u (tn ) h 2 2u (tn ) O (h 3 )
29
对经典的初值问题
du
dt
f (t,u)
u ( 0 ) u 0
t (0,T)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、 初 始 问 题 ⎧ dx = f(x,t),t > t 0 ⎪ (11 - 1) ⎨ dt ⎪ ⎩ x(t 0 ) = x 0 n x(t)∈ R ,t ≥ t 0 是 其 解 析 解 。
2008-10-23
3
2、边值问题 ⎧ dx ⎪ = f ( x , t ), a < t < b (11-2) ⎨ dt ⎪ ⎩ x ( a ) = xa , x (b ) = xb n x (t ) ∈ R , a ≤ t ≤ b是其解析解。 还有第二、第三类边值条件(略)
2008-10-23
17
二、改进欧拉法 利用算法构造模式1 公式近似有: ,其积分用梯形求积
x(t n +1 ) = x(t n ) + h n [ f (x(t n ), t n ) + f (x(t n +1 ), t n +1 ) ] + Τn +1 令 x(t n )的近似值为x n , f (x(t n ), t n )的近似值为f n = f (x n , t n ). 则得到:
2008-10-23
20
三、龙格-库塔法(RK) 如何构造更高阶的单步法?
由 x(t n + 1 ) = x(t n ) + 设 h = t n +1 − t n ,
∫
t n +1 tn
f(x(t), t)dt
ri = t n + a i h, 0 ≤ a i ≤ 1, i = 0 : m 。 ∵
( n −1) ′, , 。 x(t 0 ) = x0, x′(t 0 ) = x0 x (n-1) (t 0 ) = x0
令
y 1 = x , y 2 = x ′,
, y n = x ( n − 1 )。
可化为标准模式: dy = f ( y , t ), t > t 0 dt y (t0 ) = y 0
2008-10-23
4
d 2x 2 dx ′ 例如 : 2 + (1 − x ) + x = f (t ), x (0) = x0 , x′(0) = x0 dt dt dx 引入 y1 = x, y2 = , y = ( y1 , y2 ) Τ , 则 dt dy = f ( y , t ), y (0) = y0。 dt ′ )Τ , 其中,y0 = ( x0 , x0 f = ( f1 , f 2 ) = ( y2 , − (1 − y12 ) y2 − y1 + f (t )) Τ .
2008-10-23 24
Tn +1 = x(t n +1 ) − x(t n ) − c0 hk 0 − c1hk1 =x(t n +1 ) − x(t n ) − (c0 +c1 )x′(t n )h − (f x ⋅ x ′(t n ) ⋅ c1b11 + f t ⋅ c1a1 )h 2 + Ο(h 3 ) = (1 − c0 − c1 )x′(t n )h 1 ⎡ 1 ⎤ 2 3 ′ +( c b f x (t ) c a f h (h )。 − ) ⋅ + ( − ) ⋅ + Ο 1 11 x n 1 1 t⎥ ⎢ 2 ⎣ 2 ⎦
2008-10-23
9
边值问题的算法构造方法有差分方法、 有限元法、打靶法。 本章只介绍初始问题的求解方法。
常微分方程初始问题在系统科学研 究中 占有最重要的地位,寻求其有效数值解法是解 决问题的关键。
2008-10-23
10
§11.2 初始问题的单步法
一、欧拉法(Euler)
利用算法构造模式 ,按模式2有
∵ k 0 = f (x(t n ), t n ) = x′(t n ) k1 = f (x(t n ) + hb11k 0 , t n + a1h) = f (x(t n ), t n ) + f x (x(t n ), t n )ihb11x ′(t n ) + f t (x(t n ), t n )ia1h + Ο(h 2 ) = x′(t n ) + hb11 if x (x(t n ), t n )x ′(t n ) + ha1 if t (x(t n ), t n ) + Ο(h 2 )
j i =1 j j−1 ) h k j−1
+ Ο (h 2 )
= x ( t n ) + h ∑ ( a i − a i −1 ) k i −1 + Ο ( h 2 ) = x ( t n ) + h ∑ b ji k i − 1
i =1
b ji 待 定 .
m ⎧ ⎪ x ( t n +1 ) = x ( t n ) + h ∑ c jk j + T n +1 j= 0 ⎪ ⎪ k 0 = f ( x ( t n ), t n ), ∴ ⎨ j ⎪k = f (x (t ) + h b ji k i − 1 , t n + a j h ) , ∑ n ⎪ j i 6
∗ 初始问题( 11-1)的数值算法的构造原理:
1、初始问题( 11-1)等价为积分方程: x(tn +1 ) = x(tn ) + ∫ 1, 2, n = 0, .
tn+1 tn
f ( x(t ), t )dt (11-3)
然后利用数值积分方法。
2008-10-23
7
∗ 初始问题( 11-1)的数值算法的构造原理:
2008-10-23 13
设 h = max(h k , k = 1: n), M 2 = max( x′′(t) , t 0 ≤ t ≤ t n +1 ), M2 2 则 Tn +1 ≤ h ,及 2 M2 2 errn +1 ≤ h + (1 + hL) errn 2 M2 2 n h (∑ (1 + hL) k ) + (1 + hL) n +1 err0 ≤ 2 k =0 M 2 2 (1 + hL) n +1 − 1 M 2 (n +1)hL h ⋅ (e ≤ ≤ − 1)h 2 hL 2L
⎧ x n +1 = x n + h n [f (x n , t n ) + f (x n +1 , t n +1 )] ⎨ ⎩n = 0,1, 2,
2008-10-23 18
可以证明:
局部截断误差: Τ n +1 = Ο (h 3 n ), 整体误差: errn +1 = Ο (h 2 )。 改进 欧拉法是 隐式 的 二阶收敛 的方法。
第十一章 常微分方程数值解
¾ §11.1 常微分方程定解问题
¾ §11.2 初始问题的单步法 ¾ §11.3 初始问题的线性多步法 ¾ §11.4 微分方程组和 刚性问题的解法
2008-10-23
1
§11.1 常微分方程定解问题
一般地: F (t , x, x′, , x ( n ) ) = 0, t > t0
2、采用台劳展开的方法,即 ′ (t n ) + x(tn +1 ) = x(tn ) + hn xn hn = tn +1 − tn 然后按精度要求截断。
(11-4)
2008-10-23
8
∗ 常微分方程初始问题的数值解法有 单步法和多步法。
定义:若计算xn +1只用到前面一步信息xn , 即 xn +1 = xn + hnφ ( xn , tn , hn ) 则称之为单步算法。否则为多步算法。
x ′′( ξ ) 2 x (t n +1 ) = x ( t n ) + h n x ′ hn n (t n ) + 2 x ′′( ξ ) 2 = x ( t n ) + h n f ( x ( t n ), t n ) + hn 2 令 x(t n )的 近 似 值 记 为 x n , f (x (t n ), t n )的 近 似 值 记 为 f n = f ( x n , t n )。 则得到:
∴ errn +1 = Ο(h) !!
2008-10-23 14
评价 1、显式欧拉法是一阶收敛的算法; 2、显式欧拉法计算简单; 3、显式欧拉法对函数的光滑性要求不高; 4、显式欧拉法也形象地称为折线法。
2008-10-23
15
2、隐式欧拉法
利用算法构造模式1 ,积分用右矩公式近似有:
x(t n +1 ) = x(t n ) + h n f (x(t n +1 ), t n +1 ) + Τn +1 令 x(t n )的近似值为x n , f (x(t n ), t n )的近似值为f n = f (x n , t n )。 则得到:
∫
t n +1 tn
f(x(t), t)dt ≈ h ∑ c j k j
j= 0
m
k j = f(x(r j ), r j ), j = 0 : m . ∴ x(t n + 1 ) = x(t n ) + h ∑ c j k j + T n + 1
j= 0
2008-10-23 21
m
取 r0 = t n, 则 k 0 = f ( x ( t n ) , t n ) , ∵ x ( r j ) = x ( r j− 1 ) + ( a j − a
2008-10-23 11
1、 显 式 欧 拉 法 ⎧ x n +1 = x n + h n f n ⎨ ⎩ n = 0,1, 2, 其 中 , h n = t n + 1 − t n。