第六章 常微分方程的数值解法
第6章常微分方程数值解法
y x
f (x, y)
(6―1)
y ( x 0 ) y 0
(6-2)
在几何问题是(6-1)表现为一簇曲线,称(6-1)的积分曲线, 初值问题(6-1) (6-2)就是要求一条过(x0 ,y0)的积分曲线
第6章 常微分方程数值解法
方程的精确解y(x)称为积分曲线。 方程是否有解,解是否唯一?
《 初值问题(6.1)(6.2)的数值解法的基本特点是:
计
算
求解过程顺着节点排列的顺序一步步向前推进,
方
法 》
也即按递推公式由y0,y1…..yi推yi+1,下面各种方法的
实质是建立递推公式。
第6章 常微分方程数值解法
§2 欧拉法和改进的欧拉法
一、欧拉方法
1. 基本思想
《
计 算
区间[a,b]上给定n+1个点x0,x1,x2,……xn
第6章 常微分方程数值解法
第6章 常微分方程数值解法
§1 引言
《
计 算
§2 欧拉法和改进的欧拉法
方 法
§3 龙格-库塔法
》
§4 阿当姆斯方法
第6章 常微分方程数值解法
§1 引言
在高等数学里我们已经接触过常微分方程,对于一
《 计
些典型的常微分方程,有求解析解的基本方法,但多数
算 情况下,遇到的问题比较复杂,此时,只能利用近似方
《 计 算
两式相减得
y(xi+1)-yi+1=(h2/2)* y″(ζ )=O(h2)
方 法
即欧拉方法所得yi+1的局部截断误差为O(h2)
》
h 2 y ' ' ( )
2
常微分方程中的数值方法
常微分方程中的数值方法常微分方程是数学中的一个重要分支。
它主要研究的对象是随时间变化的函数。
在实际应用中,我们需要求解这些函数的解析解,但通常情况下,解析解并不容易得到,甚至是不可能得到。
因此,我们需要使用数值方法来求解这些函数的数值近似解。
在本文中,我们将介绍常微分方程中的数值方法。
一、欧拉法欧拉法是常微分方程数值解法中最基本的一种方法。
它是根据欧拉公式推导而来的。
具体地,我们可以将一阶常微分方程dy/dt=f(t,y)写成如下形式:y(t+h)=y(t)+hf(t,y(t))其中,h是步长,f(t,y)是t时刻y的导数。
欧拉法就是通过上面的公式进行逐步逼近,然后得到最终的数值解。
欧拉法的计算过程非常简单,但所得到的解可能会出现误差。
这是因为欧拉法忽略了f(t+h,y(t+h))和f(t,y(t))之间的变化。
因此,我们需要使用更为精确的数值方法来解决这个问题。
二、改进欧拉法为了解决欧拉法中的误差问题,我们可以使用改进欧拉法。
改进欧拉法又称作四阶龙格-库塔法。
它的基本思想是对欧拉法公式进行改进,以提高计算精度。
具体地,根据龙格-库塔公式,可将改进欧拉法表示为:y(t+h)=y(t)+1/6(k1+2k2+2k3+k4)其中,k1=h*f(t,y)k2=h*f(t+h/2,y+k1/2)k3=h*f(t+h/2,y+k2/2)k4=h*f(t+h,y+k3)改进欧拉法的计算过程比欧拉法要复杂些,但所得到的数值解比欧拉法更精确。
这种方法适用于一些特殊的问题,但在求解一些更为复杂的问题时,还需要使用其他的数值方法。
三、龙格-库塔法龙格-库塔法是求解常微分方程中数值解的常用方法之一。
它最常用的是四阶龙格-库塔法。
这种方法的基本思想是使用四个不同的斜率来计算数值解。
具体地,我们可以将四阶龙格-库塔法表示为:y(t+h)=y(t)+1/6(k1+2k2+2k3+k4)其中,k1=h*f(t,y)k2=h*f(t+h/2,y+k1/2)k3=h*f(t+h/2,y+k2/2)k4=h*f(t+h,y+k3)与改进欧拉法相比,龙格-库塔法的计算复杂度更高,但所得到的数值解更为精确。
常微分方程的数值解法
第六章 常微分方程的数值解法 §6.0 引言§6.1 算法构造的主要途径§6.2 Runge-Kutta Method 算法§6.3 线性多步法§6.4 线性多步法的一般形式§6.5 算法的稳定性、收敛性§6.0 引 言1. 主要考虑如下的一阶常微分方程初值问题的求解:()()00,dy f x y dx 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 称为微分方程的数值解。
如图所示:§6.1 算法构造的主要途径x 0 x 1 x 2 ...1 欧拉公式1.1 构造的思想:利用差商代替一阶导数,即010()()x x y x y x dy dx h =-≈,则 1000()()(,)y x y x f x y h -≈。
常微分方程数值解法
介绍常微分方程数值解法常微分方程(ordinary differential equations,ODE)可用于描述许多日常存在的物理系统。
处理ODE问题常常被称为数值求解法,这指的是找到概括ODE或者其他适用于数学模型的解决方案来模括这些ODE。
这种解决方案可能在一系列不同方案中发挥重要作用,以此来提供更好的解释和预测。
常微分方程与几何图形更为相关,它利用二维或者三维空间中曲线的绘制以及分析。
通过引入一些不同的方法,可以对不同的常微分方程中的量进行描述,使得可以通过数值方法的解析来进行研究。
数值解法可能是时间消耗较多的,但有助于验证几何图形中的某些过程,以此帮助揭示数学模型。
四种常见的常微分方程数值解法四种常见的常微分方程数值解法是:前向差分法、向后差分法、中点法和全分方法。
•前向差分法:前向差分法的基本概念是利用ODE的特定解来表达时间步的影响。
这是一种基本的数值法,可以在ODE中确定任意位置的点作为终点。
在这里,任何这样的点都可以表示为ODE右边的时间步。
•向后差分法:它是反过来基于前向差分法。
它要求对ODE中的时间步进行逆向推导,以获得某一特定点的解。
向后差分法要求推导反向解中点,以便可以从每一步中获取该点的解。
•中点法:这是一种非常基本的数值解法,可以用来求解ODE中的某一步的解,但不具有直观的方法解释。
主要的思想是在每一次时间步中通过求出ODE的中点来寻找解。
•全分方法:这是一种更复杂的数值解法,它要求将ODE中的每一步解细分并解决。
与前面提到的三种解法不同,它首先要求将ODE分解成若干离散区间,然后计算每一段区间中的点。
这种解法可以更准确地进行处理,但时间消耗较多,因此比较少被使用。
优化方案在需要解决常微分方程时,为了得到最佳的结果,有必要考虑一些优化措施。
•首先,应考虑将一个复杂的ODE拆分成一些更易解决的问题。
这样做的结果是,预见到解决此ODR的总耗时将会降低。
•其次,为了加快计算速度,可以考虑使用预解算法。
常微分方程的数值解法
常微分方程的数值解法1. 引言常微分方程是自变量只有一个的微分方程,广泛应用于自然科学、工程技术和社会科学等领域。
由于常微分方程的解析解不易得到或难以求得,数值解法成为解决常微分方程问题的重要手段之一。
本文将介绍几种常用的常微分方程的数值解法。
2. 欧拉方法欧拉方法是最简单的一种数值解法,其具体步骤如下:- 将自变量的区间等分为n个子区间;- 在每个子区间上假设解函数为线性函数,即通过给定的初始条件在每个子区间上构造切线;- 使用切线的斜率(即导数)逼近每个子区间上的解函数,并将其作为下一个子区间的初始条件;- 重复上述过程直至达到所需的精度。
3. 改进的欧拉方法改进的欧拉方法是对欧拉方法的一种改进,主要思想是利用两个切线的斜率的平均值来逼近每个子区间上的解函数。
具体步骤如下: - 将自变量的区间等分为n个子区间;- 在每个子区间上构造两个切线,分别通过给定的初始条件和通过欧拉方法得到的下一个初始条件;- 取两个切线的斜率的平均值,将其作为该子区间上解函数的斜率,并计算下一个子区间的初始条件;- 重复上述过程直至达到所需的精度。
4. 二阶龙格-库塔方法二阶龙格-库塔方法是一种更为精确的数值解法,其基本思想是通过近似计算解函数在每个子区间上的平均斜率。
具体步骤如下: - 将自变量的区间等分为n个子区间;- 在每个子区间上计算解函数的斜率,并以该斜率的平均值近似表示该子区间上解函数的斜率;- 利用该斜率近似值计算下一个子区间的初始条件,并进一步逼近解函数;- 重复上述过程直至达到所需的精度。
5. 龙格-库塔法(四阶)龙格-库塔法是目前常用的数值解法之一,其精度较高。
四阶龙格-库塔法是其中较为常用的一种,其具体步骤如下:- 将自变量的区间等分为n个子区间;- 在每个子区间上进行多次迭代计算,得到该子区间上解函数的近似值;- 利用近似值计算每个子区间上的斜率,并以其加权平均值逼近解函数的斜率;- 计算下一个子区间的初始条件,并进一步逼近解函数;- 重复上述过程直至达到所需的精度。
哈尔滨工程大学工程算法课件06常微分方程的数值求解
欧拉法得: yn 1 yn hf xn , yn 因此,局部截断误差是 o h 2 。
19
2 改进Euler法
2.1方法构造
dy f x, y ,对其从 xk 到 xk 1 进 在微分方程初值问题 dx 行定积分得:
y xk 1 y xk
yk 1 是未知,待求的,未知量在 f x, y 中这是
一个方程,如f是非线性或超越函数,此方程是无法直接解出来(要 依靠迭代法才能解出)。这类格式称为隐式格式。
21
2.3 算例
y y x 例:用改进欧拉公式求解 , h 0.2 y 0 2 解: f x, y y x h yk 1 yk f xk , yk f xk 1 , yk 1 2 h h 1 2 y 2 x x y k 1 k 1 h k h k 1 1 2 2 可以从隐式格式中解出 yk 1 问题的精确解是 y x e x x 1
16
精确解为: y x 2 x
2
可以看出误差随着计算在积累。
17
1.4 Euler法的特点和误差
迭代格式 特点
1 单步方法:
yn 1 yn hf xn , yn n 0,1, 2,, N 1
2 显示格式: 3 局部截断误差为O h2
18
第六章 常微分方程数值解
§6.0 引言
§6.1 欧拉方法 §6.2 龙格-库塔方法
§6.3 单步法的收敛性和稳定性
§6.4 线性多步法
1
§6.0 引言
1 主要考虑如下的一阶常微分方程初值问题 的求解:
dy f x, y dx y x0 y0
常微分方程组数值解法
常微分方程组数值解法一、引言常微分方程组是数学中的一个重要分支,它在物理、工程、生物等领域都有广泛应用。
对于一些复杂的常微分方程组,往往难以通过解析方法求解,这时候数值解法就显得尤为重要。
本文将介绍常微分方程组数值解法的相关内容。
二、数值解法的基本思想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的取值。
常微分方程的数值解法
常微分方程的数值解法常微分方程是研究变量的变化率与其当前状态之间的关系的数学分支。
它在物理、工程、经济等领域有着广泛的应用。
解常微分方程的精确解往往十分困难甚至不可得,因此数值解法在实际问题中起到了重要的作用。
本文将介绍常见的常微分方程的数值解法,并比较其优缺点。
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. 多步法和多级法除了亚当斯法,还有其他的多步法和多级法可以用于解常微分方程。
多步法通过利用多个点的值来逼近解,从而提高精度。
而多级法则将步长进行分割,分别计算每个子问题的解,再进行组合得到整体解。
常微分方程的数值解与解析解
一、 常微分方程的解析解常微分方程的解析解也就是常微分方程的精确解,也称为常微分方程的符号解;一般可理解为求微分方程的通解或者特解的解析式或表达式;但只有少数的微分方程存在解析解。
在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')二、 常微分方程的数值解在生产和科研中所处理的微分方程往往很复杂且大多得不出一般解。
第6章常微分方程初值问题的解法
ykh 2 k[ (ykx k 1 ) ( yk 1x k 1 1 )]
yk11 29 1yk1k05110
预估-校正Euler方法:
y k 1 0 .90 y k 5 0 .00 k 9 0 .1 5
20
Euler方法
xk
yk
yk y(xk)
0.0 1.000000
0.0
梯形方法
yk
yk y(xk)
1.000000
0.0
续
预估-校正方法
yk
yk y(xk)
1.000000
0.0
0.1 1.000000 0.2 1.010000
4.8×10-3 8.7×10-3
1.004762 1.018594
y(0) 1
其解析解为: y1xe-t2dt x[0,1] 0 很难得到其解析解
4
例如:
y=x+y , x[0,1]
y(0) 1
其解析解为 yx12ex
只有一些特殊类型的微分方程问题能够得到用解析表达式 表示的函数解,而大量的微分方程问题很难得到其解析解。
因此,只能依赖于数值方法去获得微分方程的数值解。
例如:
y=x+y , x[0,1]
y(0) 1
其解析解为:yx12ex
3
但是, 只有一些特殊类型的微分方程问题能够得到用解析 表达式表示的函数解,而大量的微分方程问题很难得到其解 析解。
因此,只能依赖于数值方法去获得微分方程的数值解。
例如:
y =e-x2 ,
x[0,1]
7.5×10-5 1.4×10-4
第六章_常微分方程初值问题的数值解法_习题课
h2 h3 y ( x n ) y ( x n ) O(h 4 ) 2 6 而且 y ( x n ) f ( x n , y ( x n )) , y ( x n 1 ) f ( x n 1 , y ( x n 1 )) ,对 y ( x n 1 ) 也在 x n 处作 Talor 展开, y ( x n 1 ) y ( x n ) hy ( x n )
湖北民族学院理学院《数值计算方法》教学辅导材料
陈以平编写
h2 h3 y ( x n ) y ( x n ) O(h 4 ) 2 6 h h h2 h3 y ( x n ) y ( x n ) y ( x n ) y ( x n ) y ( x n ) O(h 4 ) 2 2 2 12 h3 y ( x n ) O(h 4 ) O(h 3 ) 12 h3 所以,梯形公式是 2 阶方法,其截断误差的主项是 y ( x n ) 。 12 y ( x n ) hy ( x n )
y k (0.9 0.1y k sin x k ) 0.1( y k 1 y k 1 sin x k 1 )
2
当 k=0,x0=1, y0=1 时,x1=1.2,有 y y (. . y sin x ) (. sin ) .
y f ( x, y ) 3.求解初值问题 欧拉法的局部截断误差是( y ( x ) y 改进欧拉法的局部截断误差是( ); 四阶龙格-库塔法的局部截断误差是( ). (A)O(h2) (B)O(h3) (C)O(h4) (D)O(h5)
4. 改进欧拉法的平均形式公式是( ) y p y k hf ( x k , y k ) y p y k hf ( x k , y k ) (B) y c y k hf ( x k , y p ) .(A) y c y k hf ( x k , y p ) y k ( y p y c ) y k ( y p y c ) y p y k hf ( x k , y k ) y p y k hf ( x k , y k ) (C) y c y k hf ( x k , y p ) (D) y c y k hf ( x k , y p ) y k h ( y p y c ) y k ( y p y c ) (D) 答案:
第六章 常微分方程解法
§6.1 概述
常微分方程数值解法所考虑的主要问 题有:
(1) 方法推导。即用什么样的途径来导出 递推格式; (2) 收敛性。即差分方程的解能否充分逼 近微分方程初值问题的解; (3) 误差传播。在递推过程中,每一步 都会产生截断误差和舍入误差,这个误 差是否对后续各步产生严重影响。
第六章 常微分方程的数值解法
§6.4 改进欧拉方法
(modified Euler’s method)
§6.4 改进欧拉方法
梯形方法比欧拉方法更精确,但是一 种隐式方法,求解方程计算量大。 实际计算中,迭代初始值yn+1可取欧拉 方程结果,迭代一次即可,这样的计算 公式叫改进欧拉法。
§6.4 改进欧拉方法
§6.1 概述 理论做了系统阐述。在代数数论领域,他引进了相 应的符号表示法及其计算法则,建立起被称为“李 普希兹代数”的超复数系。在微分几何方面,他自 1869年起对黎曼关于n维流形的度量结构的工作做 出进一步阐述和推广,开创了微分不变量理论的研 究,因此被认为是协变微分的奠基人之一。他的工 作后来被里奇有效地用于张量分析。
§6.1 概述
本章我们将学习一阶常微分方程的初 值问题的数值解:
dy f ( x, y ) dx y ( x0 ) y0 (1) (2)
一般情况下,方程(1)有无穷多个解, 式(2)是确定解的初始条件。
§6.1 概述
定义: 如果一元函数y(x)对一切 a x b 满足 (1) ( x, y( x)) 平面区域D
计算方法 (力学系本科生)
第六章 常微分方程 的数值解法 (Integration of ordinary differential equations)
第6章 常微分方程数值解法-文档资料
for i=1:5 y=(1-h)*y+h*x x=x+h; end
科大研究生学位课程
数值分析
6.1.2 欧拉格式的改进
对微分方程 y'd yf(x,y) , x [a,b] dx
所以,有格式为:
yi 1yih 2[f(xi,yi)f(xi 1,yi 1)]
上式称为梯形格式。
类似,可以算出梯形格式的误差估计式:
i1 O(h3)
2阶的方法
梯形法是二阶、隐式单步的方法,要用迭代法求解。怎么求?
科大研究生学位课程
数值分析
改进欧拉格式 /* modified Euler’s Formula */
科大研究生学位课程
数值分析
微分方程的数值方法。求的是在一系列离散点列上,未知 函数y(x)在这些点上的值的近似。 为了考察数值方法提供的数值解,是否有实用价值,需要 知道如下问题:
① 步长充分小时,所得到的数值解能否逼近问题得真解; 即收敛性问题 ② 误差估计,主要考虑局部截断误差。 ③ 产生的舍入误差,在以后得各步计算中,是否会无限
计算定积分,则: d xi1 y xi1 f(x,y)dx
xi
xi
y(xi1)y(xi)xxii1 f(x,y)dx
用左矩形公式 x x ii 1f(x ,y (x )d ) x f(x i,y (x i)()x i 1 x i)
y ( x i 1 ) y i f( x i,y ( x i)x ) i 1 ( x i)
数值分析
例6.1:考虑初值问题:
总结第6章常微分方程数值解法
第6章 常微分方程数值解法
相关定义
阶数:微分方程中出现的未知函数的最高 阶导数的阶数。
线性微分方程:如果未知函数y及其各阶导 数都是一次的。
非线性微分方程: 一阶常微分方程
第6章 常微分方程数值解法
典型方程的解法:可分离变量法,常系数齐 次线性方程的解法,常系数非齐次线性方程 的解法 。
单步迭代法:计算yi+1时只用到xi+1, xi, yi。
代表:龙格—库塔法
多步迭代法:计算yi+1时除用到xi+1, xi, yi,
还用到xi-p, yi-p (p=1,2, …k)。 代表:亚当斯法
第6章 常微分方程数值解法
§2 欧拉法和改进的欧拉法 一、欧拉法基本思想
dy dx
f
(x, y)
y(x0 ) y0
离散结点a=x0<x1<x2<…<xn=b, h= xi-xi-1 xi=x0+ih
积分曲线上每一点(x,y)的切线的斜率y'(x)等 于函数f(x,y)在该点的值
第6章 常微分方程数值解法
y-y0=f(x0,y0)(x-x0)⇒ y1=y0+f(x0,y0)(x1-x0)=y0+f(x0,y0)h y-y1=f(x1,y1)(x-x1)⇒ y2=y1+f(x1,y1)(x2-x1)=y1+f(x1,y1)h
但能求解的常微分方程仍然是有限的,
大多数的常微分方程是不可能给出解析解的。
如 y' x2 y2,
y' y y(0) 1
第6章 常微分方程数值解法
从实际问题中归纳出来的微分方程, 通常主要依靠数值解法来解决。也就是 求在某些点上满足一定精度的近似解。
计算方法 第6章 常微分方程数值解
已知Euler格式 yn1 yn hf ( xn , yn )
h2 y( xn1 ) yn1 2 y''( xn )
即Euler格式具有一阶精度
如果令
y( xn1 ) y( xn1 ) 2h
y'( xn )
f ( xn , yn )
并假定 y( xn1 ) yn1, y( xn ) yn
常微分方程数值解
常微分方程的数值解法
§1 引 言 §2 欧拉方法 §3 龙格-库塔方法
2
§1 引 言
在工程和科学技术的实际问题中,常需要解常微 分方程。但常微分方程组中往往只有少数较简单和典 型的常微分方程(例如线性常系数常微分方程等)可 求出其解析解。对于变系数常微分方程的解析求解就 比较困难,而一般的非线性常微分方程就更不用说了。 在大多数情况下,常微分方程只能用近似法求解。这 种近似解法可分为两大类:一类是近似解析法,如级 数解法、逐次逼近法等;另一类则是数值解法,它给 出方程在一些离散点上的近似解。
yn
2
xn yn
令 h 0.1 将 x0 0, y0 1 代入Euler格式
步进计算结果见P106表5.1
第五章:常微分方程数值解
Euler值
y 1 2x
第五章:常微分方程数值解
Euler格式的误差分析
pn1
事实上Euler格式的每一步都存在误差,为了方便讨论y算( x)
d2x
dt 2 x(t
0
c
m )
x x
0
0 (t
t) 0
x(t ) x
0
0
5
常微分方程的数值解法
常微分方程的数值解法常微分方程的数值解法,这个话题一听就让人感觉有点儿“高大上”,是不是?别急,咱们今天就把这个看似复杂的东西聊得轻松点。
想象一下,你的生活中随时都在用到数学,走路时的速度、车子的加速,甚至你做的美食,背后其实都藏着一些微分方程的身影。
说白了,常微分方程就是描述一个变量随另一个变量变化的关系。
听起来是不是有点儿抽象?咱们可以用一些简单的例子来说明。
比如说,想象一下你在家里的花园里浇水,植物的生长就可以用微分方程来描述。
你浇水越多,植物长得越快,没错吧?这时候,就有个问题来了:你浇水的频率和量应该是多少呢?这就涉及到微分方程了。
可是,现实生活中,咱们并不能总是拿个公式就能算出结果。
假如你想要把这个过程模拟出来,找出植物生长的规律,这时候数值解法就派上用场了。
数值解法听起来很复杂,但实际上它的核心思想就是通过一些巧妙的方法把这些难以直接求解的微分方程转化为我们能够计算的形式。
就像是你要吃一个巨大的蛋糕,如果直接咬下去,肯定会噎着;所以,聪明的你会选择先把蛋糕切成小块,再慢慢享用。
这就是数值解法的思路。
它把复杂的事情分解成简单的小步骤,让我们能一个一个地解决。
常见的数值解法有很多,比如欧拉法、龙格库塔法。
这些名字听起来像是外星人的语言,其实很简单。
以欧拉法为例,就像在慢慢走路,每一步都非常稳当。
你先确定一个初始值,然后根据微分方程的斜率来推算下一步的值。
一步一步走,虽然速度慢点儿,但稳妥得很,不容易出错。
只要你把每一步都计算好,最终就能到达目标。
再说说龙格库塔法,这个名字听起来像是在做科学实验,其实它是一种更高效的方法。
就好比你打游戏,普通模式下你需要慢慢磨练,而龙格库塔法就像是开了个外挂,让你更快地达到目标。
这个方法通过在每一步中做多次的预测和修正,来提高精度,减少误差。
简单来说,就是“多看看再决定”,这样能让你走得更稳、更远。
咱们在应用这些方法时,当然得注意一些细节。
比如说,步长的选择。
第六章常微分方程的数值解法
第六章常微分方程的数值解法第六章常微分方程的数值解法在自然科学研究和工程技术领域中,常常会遇到常微分方程的求解问题。
传统的数学分析方法仅能给出一些简单的、常系数的、经典的线性方程的解析表达式,不能处理复杂的、变系数的、非线性方程,对于这些方面的问题,只能求诸于近似解法和数值解法。
而且在许多实际问题中,确确实实并不总是需要精确的解析解,往往只需获得近似的解或者解在若干个点上的数值即可。
在高等数学课程中介绍过的级数解法和逐步逼近法,能够给出解的近似表达式,这一类方法称为近似解法。
还有一类方法是通过计算机来求解微分方程的数值解,给出解在一些离散点上的近似值,这一类方法称作为数值方法。
本章主要介绍常微分方程初值问题的数值解法,包括Euler 方法、Runge-Kutta 方法、线性多步法以及微分方程组与高阶微分方程的数值解法。
同时,对于求解常微分方程的边值问题中比较常用的打靶法与有限差分法作了一个简单的介绍。
§1 基本概念1.1 常微分方程初值问题的一般提法常微分方程初值问题的一般提法是求解满足如下条件的函数,,b x a x y ≤≤)(=<<=α)(),(a y bx a y x f dxdy, (1.1) 其中),(y x f 是已知函数,α是给定的数值。
通常假定上面所给出的函数),(y x f 在给定的区域},),{(+∞<≤≤=yb x a y x D 上面满足如下条件:(1) 函数),(y x f 在区域D 上面连续;(2) 函数),(y x f 在区域D 上关于变量y 满足Lipschitz(李普希茨)条件:212121,),(),(y y b x a y y L y x f y x f ?≤≤?≤?,, (1.2)其中常数L 称为Lipschitz(李普希茨)常数。
由常微分方程的基本理论可以知道,假如(1.1)中的),(y x f 满足上面两个条件,则常微分方程初值问题(1.1)对于任意给定的初始值α都存在着唯一的解,,b x a x y ≤≤)(并且该唯一解在区间[a,b]上是连续可微的。
常微分方程数值解法
常微分方程数值解法常微分方程是研究函数的导数与自变量之间的关系的数学分支,广泛应用于物理、工程、生物等领域的建模与分析。
在实际问题中,我们常常遇到无法通过解析方法求得精确解的常微分方程,因此需要利用数值解法进行求解。
本文将介绍几种常用的常微分方程数值解法。
一、欧拉方法(Euler's Method)欧拉方法是最基本的数值解法之一。
它的思想是将微分方程转化为差分方程,通过逐步逼近解的方式求得数值解。
具体步骤如下:1. 将微分方程转化为差分方程:根据微分方程的定义,可以得到差分方程形式。
2. 选择步长:将自变量范围进行离散化,确定步长h。
3. 迭代计算:根据差分方程递推公式,利用前一步的数值解计算后一步的数值解。
二、改进的欧拉方法(Improved Euler's Method)改进的欧拉方法通过使用欧拉方法中的斜率来进行更准确的数值计算。
具体步骤如下:1. 计算欧拉方法的斜率:根据当前节点的数值解计算斜率。
2. 根据斜率计算改进的数值解:将得到的斜率代入欧拉方法的递推公式中,计算改进的数值解。
三、龙格-库塔方法(Runge-Kutta Method)龙格-库塔方法是一类常微分方程数值解法,其中最著名的是四阶龙格-库塔方法。
它通过计算各阶导数的加权平均值来逼近解,在精度和稳定性方面相对较高。
具体步骤如下:1. 计算每一步的斜率:根据当前节点的数值解计算每一步的斜率。
2. 计算权重:根据斜率计算各个权重。
3. 计算下一步的数值解:根据计算得到的权重,将其代入龙格-库塔方法的递推公式中,计算下一步的数值解。
四、多步法(多步差分法)多步法是需要利用多个前面节点的数值解来计算当前节点的数值解的数值方法。
常见的多步法有Adams-Bashforth法和Adams-Moulton法。
具体步骤如下:1. 选择初始值:根据差分方程的初始条件,确定初始值。
2. 迭代计算:根据递推公式,利用前面节点的数值解计算当前节点的数值解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常微分方程的数值解法§6.0 引言§6.1 算法构造的主要途径§6.2 Runge-Kutta Method算法§6.3 线性多步法§6.4 线性多步法的一般形式§6.5 算法的稳定性、收敛性§6.6 小结§6.0 引 言1.主要考虑如下的一阶常微分方程初值问题的求解:()()00,dyf x y dx y x y ⎧=⎪⎪⎨=⎪⎪⎩微分方程的解就是求一个函数()y y x =,使得该函数满足微分方程并且符合初值条件。
2.例如微分方程:'-24(1)-3 xy y x y =⎧⎨=⎩初始条件.可得一阶常微分方程的初始问题24(1)3yy 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 ),即()k k y y x ,这样y 0 , y 1 ,...,y n 称为微分方程的数值解。
如图所示:abx 0 x 1 x 2 ... x n-1 x n§6.1 算法构造的主要途径1 欧拉公式 1.1 构造的思想:微分方程初值问题: ()()00,dyf x y dx y x y ⎧=⎪⎨⎪=⎩利用差商代替一阶导数,即010()()x x y x y x dydx h=-≈,则1000()()(,)y x y x f x y h-≈。
于是,可求出y(x 1)的近似值y 1,1000(,)y y hf x y =+同样地,可利用x 1处的微分方程可得:2111(,)y y hf x y =+一般地,利用在x n 处的微分方程可得:1(,),0,1,2,...n n n n y y hf x y n +=+=此式称为欧拉公式。
1.2 几何意义:对于微分方程y'=2(x+1),其通解是y=(x+1)2+c ,是一个曲线族,当给定初值条件y (0)=2,其特解为y=(x+1)2+1。
如图所示:由y (0)=2,过该曲线上一点(0,2)作曲线的切线,其斜率()00,2x dy f dx ==,∴切线为:()20,2(0)y f x -=-,因此可计算出y 1, 如此,可根据:()1111,()y y f x y x x -=-,…故欧拉法又称欧拉折线法。
1.3算例:例:在区间[0,1]上以h=0.1为步长,用欧拉法求初值问题⎪⎩⎪⎨⎧=-=1)0(2y y x y dxdy的数值解?解:该方程为贝努利方程,其精确解为x y 21+=欧拉公式的具体形式为⎪⎪⎭⎫⎝⎛-+=+n n n n n y x y h y y 21取步长 1,0,1.000===y x h , 计算结果见下表:nn x y 欧拉法准确解10987654321019.08.07.06.05.04.03.02.01.00784771.1717779.1649783.1580338.1508966.1435133.1358213.1277438.1191818.11.11 732051.1673320.1612452.1549193.1483240.1414214.1341641.1264911.1183216.1095445.11近似解与准确解比较,欧拉法的结果大致只有两位有效数字,而预估—校正法的结果则 有3位有效数字。
1.4 Euler 法的特点和误差 迭代格式:()1,0,1,2,,1n n n n y y hf x y n N +=+=-特点:(1) 单步方法; (2) 显式格式; (3) 局部截断误差为()2h ο 。
局部截断误差: 当()nn y y x =时,由()n y x 按照欧拉方法计算来的1k y +的误差称为局部截断误差。
即,()()()()1[,]n n n n y x y x hf x y x +-+是局部截断误差。
如:()()()()2112n n n y x y x hy x h y ξ+'''=++欧拉法得:()1,n n n n y y hf x y +=+因此,局部截断误差是()2h ο。
2 改进Euler 法 2.1方法构造在微分方程初值问题(,)dyf x y dx=,对其从k x 到1k x +进行定积分得: 11()()(,())k kx k k x y x y x f x y x dx++-=⎰将右端的定积分用梯形公式来进行近似计算。
[]111()()(,())(,())2k k k k k k hy x y x f x y x f x y x +++-≈+用1k y +和k y 来分别代替1()k y x +和()k y x 得计算格式:111((,)(,))2k k k k k k hy y f x y f x y +++=++这就是改进欧拉方法。
2.2 显式格式和隐式格式 在欧拉式中1(,)k k k k y y hf x y +=+每一步计算已知k y ,直接用格式可以计算出1k y +,此类格式称为显式格式。
而在改进欧拉方法中111((,)(,))2k k k k k k hy y f x y f x y +++=++在每一步计算中1k y +是未知,待求的,未知量在(,)f x y 中这是一个方程,如f 是非线形或超越函数,此方程是无法直接解出来(要依靠迭代法才能解出)。
这类格式称为隐式格式。
2.3 算例例: (0)2y y x y '=-⎧⎨=⎩用改进欧拉方法求解0.2h =。
解:111()2k k k k k k hy y y x y x +++=+-+-解得:11122()1122k k k k h h y y x x h h +++=-+--注意:由于(,)f x y y x =-,是线形函数可以从隐式格式中 解出1k y +。
问题的精确解是()1xy x e x =++k x()k y x k yk e欧拉方法 误差0.22.421403 2.422222 0.0008130.021400.42.891825 2.893827 0.00200 0.05183 0.63.422119 3.425789 0.003670.09411……………2.010.38906 10.43878 0.048721.1973例:在区间[0,1]上以h=0.1为步长,分别用欧拉法与预估— 校正法求初值问题⎪⎩⎪⎨⎧=-=1)0(2y y x y dxdy的数值解?解:该方程为贝努利方程,其精确解为x y 21+=欧拉公式的具体形式为⎪⎪⎭⎫⎝⎛-+=+n n n n n y x y h y y 21预估—校正公式的具体形式为()⎪⎪⎪⎩⎪⎪⎪⎨⎧⎪⎪⎭⎫ ⎝⎛++-+=-=++=+11212112)2(2121k y h x k y hf k y x y hf k k k y y n n n nnn n n 取步长 1,0,1.000===y x h , 计算结果见下表:nn xy欧拉法 预估-校正法 准确解10987654321019.08.07.06.05.04.03.02.01.00 784771.1717779.1649783.1580338.1508966.1435133.1358213.1277438.1191818.11.11 737867.1678166.1616475.1552514.1485956.1416402.1343360.1266201.1184097.1095909.11732051.1673320.1612452.1549193.1483240.1414214.1341641.1264911.1183216.1095445.11近似解与准确解比较,欧拉法的结果大致只有两位有效数字,而预估—校正法的结果则 有3位有效数字。
3 预测-校正方法由于改进Euler 法是隐式格式,无法从格式中直接求出1n y +必须要解方程。
下面用预测-校正方法来求隐式格式中的1n y +。
预测值: ()1,n n n n y y hf x y +=+校正值:()()111,,2n n n n n n hy y f x y f x y +++⎡⎤=++⎣⎦ 此式相当于对隐式格式求1k y +时采用迭代的方法,用欧拉格式得到的1k y +作为初始值迭代公式迭代一次而已,此公式代入后得:1((,)(,(,)))2k k k k k k k k hy y f x y f x h y hf x y +=++++如改写成平均的形式为:11(,)(,)1()2p k k k c k k p k p c y y hf x y y y hf x y y y y ++⎧⎪=+⎪=+⎨⎪⎪=+⎩§6.2 龙格-库塔法Runge-Kutta Method1 龙格-库塔法的思想1.1 考虑微分方程的初值问题:00'(,)()y f x y y x y =⎧⎨=⎩根据微分中值定理有:1()()'()k k k y x y x y x h h θ+-=+,其中0<θ<1。
于是'()(,())k k k y x h f x h y x h θθθ+=++即1(()()),)(k k k k f x y x y x h h y x h θθ+++=+我们称(,())k k f x h y x h θθ++为y (x )在区间[x k , x k+1]上的平均斜率,记作K ,其中,θ是存在但是未知的。
因此,如何对平均斜率K 进行近似计算,相应地就得到一种近似公式,或称为微分方程的一种计算格式。
1.2例如:用f (x k ,y k )作为平均斜率K 的近似值就得到欧拉格式:1(,)k k k k y y hf x y +=+。
用111((,()(,))2k k k k f x y x f x y +++作为平均斜率K 的近似值就得到比欧拉格式高一阶精度的格式,即,改进欧拉格式的预测-校正方法:111((,)(,))2k k k k k k hy y f x y f x y +++=++1.3 启发(Motivative)??能否在二维平面中x ∈[x k , x k+1], y ∈[y k , y k+1]上多找一些f (x,y )点,在这些点上作函数值的平均数并以此作为平均斜率K 的近似值。