欧拉法与龙格库塔法比较分析
- 格式:doc
- 大小:255.50 KB
- 文档页数:18
微分方程的数值解法微分方程是自然科学和现代技术领域中一种最基本的数学描述工具,它可以描述物理世界中的各种现象。
微分方程的解析解往往很难求出,因此数值解法成为解决微分方程问题的主要手段之一。
本文将介绍几种常见的微分方程的数值解法。
一、欧拉法欧拉法是微分方程初值问题的最简单的数值方法之一,它是由欧拉提出的。
考虑一阶常微分方程:$y'=f(t,y),y(t_0)=y_0$其中,$f(t,y)$表示$y$对$t$的导数,则$y(t_{i+1})=y(t_i)+hf(t_i,y_i)$其中,$h$为步长,$t_i=t_0+ih$,$y_i$是$y(t_i)$的近似值。
欧拉法的精度较低,误差随着步长的增加而增大,因此不适用于求解精度要求较高的问题。
二、改进欧拉法改进欧拉法又称为Heun方法,它是由Heun提出的。
改进欧拉法是在欧拉法的基础上进行的改进,它在每个步长内提高求解精度。
改进欧拉法的步骤如下:1. 根据当前$t_i$和$y_i$估算$y_{i+1}$:$y^*=y_i+hf(t_i,y_i),t^*=t_i+h$2. 利用$y^*$和$t^*$估算$f(t^*,y^*)$:$f^*=f(t^*,y^*)$3. 利用$y_i$、$f(t_i,y_i)$和$f^*$估算$y_{i+1}$:$y_{i+1}=y_i+\frac{h}{2}(f(t_i,y_i)+f^*)$改进欧拉法具有比欧拉法更高的精度,但是相较于其他更高精度的数值方法,它的精度仍然较低。
三、龙格-库塔法龙格-库塔法是一种广泛使用的高精度数值方法,它不仅能够求解一阶和二阶常微分方程,还能够求解高阶常微分方程和偏微分方程。
其中,经典的四阶龙格-库塔法是最常用的数值方法之一。
四阶龙格-库塔法的步骤如下:1. 根据当前$t_i$和$y_i$估算$k_1$:$k_1=f(t_i,y_i)$2. 根据$k_1$和$y_i$估算$k_2$:$k_2=f(t_i+\frac{h}{2},y_i+\frac{h}{2}k_1)$3. 根据$k_2$和$y_i$估算$k_3$:$k_3=f(t_i+\frac{h}{2},y_i+\frac{h}{2}k_2)$4. 根据$k_3$和$y_i$估算$k_4$:$k_4=f(t_i+h,y_i+hk_3)$5. 根据$k_1$、$k_2$、$k_3$和$k_4$计算$y_{i+1}$:$y_{i+1}=y_i+\frac{h}{6}(k_1+2k_2+2k_3+k_4)$龙格-库塔法的精度较高,在求解一些对精度要求较高的问题时,龙格-库塔法是一个比较好的选择。
非线性动力系统的数值计算方法及稳定性分析非线性动力系统是一种非常常见的实际物理系统,例如电路、化学反应、天气系统等,它们的行为通常比线性系统更加复杂。
数值计算非线性动力系统的稳定性与动力学特性是一个非常重要的课题,对于研究和预测实际系统的行为有着非常重要的意义。
在本文中,我们将介绍几种常见的非线性动力系统的数值计算方法及它们的稳定性分析。
一、欧拉法欧拉法是动力系统数值计算中最基本的一种方法。
它的基本思路是将连续的时间离散化,将微分方程转化成差分方程,然后用迭代的方式求解。
欧拉法的迭代公式为:$$y_{n+1}=y_{n}+hf(y_n)$$其中,$h$为步长,$f(y_n)$是微分方程在$y_n$处的导数。
欧拉法是一种比较简单易懂的方法,但是它的稳定性较差,容易产生数值误差。
欧拉法对于初始值的依赖性很强,如果步长$h$选取过大,就会导致解的不稳定。
因此,在使用欧拉法进行数值计算时,我们需要根据实际问题来调整步长,以保证数值解的正确性。
二、龙格-库塔法龙格-库塔法是一种常见的数值积分方法,在动力系统数值计算中也常常被使用。
它的基本思路是利用微分方程的某些性质,选取合适的时间步长和权重,在数值上求得微分方程的积分近似解。
龙格-库塔法通常可以由一些权重系数和步长系数组成,如下:$$Y_{n+1}=Y_n+\frac{1}{6}(k_1+2k_2+2k_3+k_4)$$$$k_1=hf(Y_n)$$$$k_2=hf(Y_n+\frac{1}{2}k_1)$$$$k_3=hf(Y_n+\frac{1}{2}k_2)$$$$k_4=hf(Y_n+k_3)$$其中,$k_1,k_2,k_3,k_4$均为微分方程在相应位置处的导数。
龙格-库塔法比欧拉法更加稳定,适用于多数动力系统的数值计算。
但是,龙格-库塔法在计算一些比较长时间范围内的运动时,需要降低步长以保证解的精度。
同时,权重系数和步长系数也需要根据具体问题调整,才能得到更加准确的数值解。
微分方程数值解算方法比较分析微分方程是数学中的重要概念,它描述了各种自然现象和物理规律。
然而,解析求解微分方程并不总是容易的,特别是对于复杂的问题。
因此,数值解算方法成为了解决微分方程的常用途径。
本文将比较分析几种常见的微分方程数值解算方法,包括欧拉方法、改进的欧拉方法和龙格-库塔方法,并讨论它们的优缺点以及适用范围。
首先我们来介绍欧拉方法。
欧拉方法是最基础的数值解算方法之一。
它基于微分方程的离散化,将微分方程转化为差分方程。
欧拉方法通过对微分方程进行近似,将微分方程的导数用差分替代,从而得到递推公式。
欧拉方法的优点是简单易用,计算速度较快。
然而,由于欧拉方法的局部截断误差较大,它的精度较低。
因此,欧拉方法适用于一些简单的问题,但对于具有高精度要求的问题来说并不是一个理想的选择。
接下来是改进的欧拉方法,它是对欧拉方法的改进和优化。
改进的欧拉方法采用更精确的逼近公式,提高了数值解的精度。
具体来说,改进的欧拉方法利用前向欧拉方法和后向欧拉方法的加权平均来获得更精确的递推公式。
改进的欧拉方法相比于欧拉方法,具有更高的精度,并且仍然保持了相对较简单的计算步骤。
因此,改进的欧拉方法适用于那些要求精度较高但不需要过多计算复杂性的问题。
最后,我们来介绍龙格-库塔方法。
龙格-库塔方法是数值解算方法中最为常用的一种方法。
它通过迭代计算来逼近微分方程的解,并且具有较高的精度。
龙格-库塔方法的主要思想是通过多步迭代,不断修正和逼近数值解,从而提高精度。
具体来说,龙格-库塔方法通过计算多个局部斜率来得到数值解的修正值,进而更新数值解。
由于龙格-库塔方法采用多步迭代计算,它的精度较高,适用于那些对精度要求较高的问题。
然而,相对于欧拉方法和改进的欧拉方法,龙格-库塔方法的计算复杂性较高,因此在一些计算资源有限的情况下可能不适用。
综上所述,我们比较分析了欧拉方法、改进的欧拉方法和龙格-库塔方法这三种常见的微分方程数值解算方法。
欧拉法与龙格库塔法比较分析解微分方程的欧拉法,龙格-库塔法简单实例比较欧拉方法(Euler method)用以对给定初值的常微分方程(即初值问题)求解分为前EULER法、后退EULER法、改进的EULER法。
缺点:欧拉法简单地取切线的端点作为下一步的起点进行计算,当步数增多时,误差会因积累而越来越大。
因此欧拉格式一般不用于实际计算。
改进欧拉格式(向前欧拉公式):为提高精度,需要在欧拉格式的基础上进行改进。
采用区间两端的斜率的平均值作为直线方程的斜率。
改进欧拉法的精度为二阶。
算法:微分方程的本质特征是方程中含有导数项,数值解法的第一步就是设法消除其导数值。
对于常微分方程:dy,fxy(,)xab,[,] dxyay(), 0'可以将区间分成段,那么方程在第点有,再用n[,]abyxfxyx()(,()),xiiii 向前差商近似代替导数则为:((1)())yxyx,,ii,fxyx(,()) iihh在这里,是步长,即相邻两个结点间的距离。
因此可以根据点和的数xyii值计算出来: yi,1yyhfxy,,,(,)iL,0,1,2,? iiii,1这就是向前欧拉公式。
改进的欧拉公式:将向前欧拉公式中的导数改为微元两端导数的平均,即上式便是梯形的fxy(,)ii欧拉公式。
可见,上式是隐式格式,需要迭代求解。
为了便于求解,使用改进的欧拉公式: 数值分析中,龙格,库塔法(Runge-Kutta)是用于模拟常微分方程的解的重要的一类隐式或显式迭代法。
实际上,龙格-库塔法是欧拉方法的一种推广,向前欧拉公式将导数项简单取为,而改进的欧拉公式将导数项取为两端导数fxy(,)nn 的平均。
龙格-库塔方法的基本思想:在区间内多取几个点,将他们的斜率加权平均,作为导数的近似。
[,]xxnn,1龙格库塔法的家族中的一个成员如此常用,以至于经常被称为“RK4”或者就是“龙格库塔法”。
令初值问题表述如下。
'yty(),yfty,(,) 00则,对于该问题的RK4由如下方程给出:h,,,,,(22)yykkkk nn,112346其中kfty,(,) 1nnhh(,)kftyk,,, 21nn22hh(,)kftyk,,, 32nn22kfthyhk,,,(,) 43nnh这样,下一个值由现在的值加上时间间隔和一个估算的斜率的乘积决yyn,1n定。
欧拉法、梯形法和龙格-库塔一、解方程:= 8x(2-y)y(0)=1二、算出方程的解析解为:y= 2 -三、实验原理:1.欧拉法原理:将区间[a,b]分成n段,那么方程在第x i点有y'(x i) = f(x i,y(x i)),再用向前差商近似代替导数则为:,在这里,h是步长,即相邻两个结点间的距离。
因此可以根据xi点和yi 点的数值计算出y i+1来:,i=0,1,2,n这就是欧拉格式,若初值y i+ 1是已知的,则可依据上式逐步算出数值解y1,y2……..yn2.梯形法原理:将向前欧拉公式中的导数f(xi,yi)改为微元两端f(xi,yi)和f(xi+1,yi+1)的平均,即梯形公式。
3.龙格-库塔方法的基本思想:在区间[xn,xn+1]内多取几个点,将他们的斜率加权平均,作为导数的近似。
令初值问题表述如下。
则,对于该问题的RK4由如下方程给出:其中这样,下一个值(y n+1)由现在的值(y n)加上时间间隔(h)和一个估算的斜率的乘积决定。
该斜率是以下斜率的加权平均:k1是时间段开始时的斜率;k2是时间段中点的斜率,通过欧拉法采用斜率k1来决定y 在点tn + h/2的值;k3也是中点的斜率,但是这次采用斜率k2决定y值;k4是时间段终点的斜率,其y值用k3决定。
当四个斜率取平均时,中点的斜率有更大的权值:RK4法是四阶方法,也就是说每步的误差是h5阶,而总积累误差为h4阶。
四、欧拉法、梯形法和龙格-库塔的实现代码:h=0.1;x=0:h:1;y1=zeros(size(x));y1(1)=1;y2=zeros(size(x));y2(1)=1;y3=zeros(size(x));y3(1)=1;for i1=2:length(x)y1(i1) = y1(i1-1) + h*8*x(i1-1)*(2-y1(i1-1));%欧拉法m1= 8*x(i1-1)*(2-y2(i1-1));%梯形法m2 =8*x(i1)*(2-y2(i1-1)+h*m1);y2(i1)=y2(i1-1)+h*(m1+m2)/2;%梯形法公式k1=8*x(i1-1)*(2-y2(i1-1)); %龙格-库塔k2=8*(x(i1-1)+h/2)*(2-(y2(i1-1)+h*k1/2));k3=8*(x(i1-1)+h/2)*(2-(y2(i1-1)+h*k2/2));k4=8*(x(i1-1)+h)*(2-(y2(i1-1)+h*k3));y3(i1)=y3(i1-1)+(k1+2*k2+2*k3+k4)*h/6; %龙格-库塔公式endy4=2-exp(-4*(x.^2));%解析解plot(x,y1,x,y2,x,y3,x,y4)%解析解与数值解图像legend('y1','y2','y3','y4')plot(x,y4-y1,x,y4-y2,x,y4-y3)% 解析解与数值解误差图像legend('y4-y1','y4-y2','y4-y3')五、图像:1.解析解y4与各个数值解y1,y2,y3的图像:(1)当步长h=0.1时:(2)当步长h=0.05时:(3)当步长h=0.01时:结论:三个图中,方程的解析解都是y4。
微分方程组的数值求解方法微分方程组数值求解方法微分方程组是数学中非常重要的一个分支,它描述了许多自然界和社会生活中的现象,例如电路的运行、天体的运行、生命体的生长等等。
我们需要对微分方程组进行求解,才能够得到它们的解析解,从而更好地理解和应用它们。
然而,大多数微分方程组不可能用解析法求解,因此,我们需要采用数值方法来求解微分方程组。
常见的微分方程组数值求解方法包括欧拉法、龙格库塔法和变步长法等。
下面,我们将逐一介绍它们的基本原理和优缺点。
一、欧拉法欧拉法是微分方程组数值求解方法中最简单的一种。
它的基本思想是将微分方程组中的各个变量离散化,然后根据微分方程组的导数计算每一步的值。
具体来讲,欧拉法的数值求解公式为:\begin{aligned} &x_{n+1}=x_n+hf_n(x_n,y_n,z_n),\\&y_{n+1}=y_n+hf_n(x_n,y_n,z_n),\\&z_{n+1}=z_n+hf_n(x_n,y_n,z_n), \end{aligned}其中,$x(t)$,$y(t)$,$z(t)$是微分方程组的解,$f_n(x_n,y_n,z_n)$是微分方程组导数在点$(x_n,y_n,z_n)$处的值,$h$为时间步长。
欧拉法的优点是简单易懂,方便实现,缺点是误差较大,计算不够精确。
因此,在实际应用中,往往需要采用更加精确的数值方法。
二、龙格库塔法龙格库塔法是微分方程组数值求解方法中比较常用的一种。
它的基本思想是通过多次计算微分方程组中的导数,以获得更加精确的数值解。
具体来讲,龙格库塔法的求解公式为:\begin{aligned}&k_{1x}=hf_n(x_n,y_n,z_n),k_{1y}=hf_n(x_n,y_n,z_n),k_{1z}=hf_n (x_n,y_n,z_n),\\&k_{2x}=hf_n(x_n+\frac{h}{2},y_n+\frac{k_{1y}}{2},z_n+\frac{k_ {1z}}{2}),k_{2y}=hf_n(x_n+\frac{h}{2},y_n+\frac{k_{1y}}{2},z_n+ \frac{k_{1z}}{2}),k_{2z}=hf_n(x_n+\frac{h}{2},y_n+\frac{k_{1y}}{ 2},z_n+\frac{k_{1z}}{2}),\\&k_{3x}=hf_n(x_n+\frac{h}{2},y_n+\frac{k_{2y}}{2},z_n+\frac{k_ {2z}}{2}),k_{3y}=hf_n(x_n+\frac{h}{2},y_n+\frac{k_{2y}}{2},z_n+ \frac{k_{2z}}{2}),k_{3z}=hf_n(x_n+\frac{h}{2},y_n+\frac{k_{2y}}{ 2},z_n+\frac{k_{2z}}{2}),\\&k_{4x}=hf_n(x_n+h,y_n+k_{3y},z_n+k_{3z}),k_{4y}=hf_n(x_n+h,y_n+k_{3y},z_n+k_{3z}),k_{4z}=hf_n(x_n+h,y_n+k_{3y},z_n+k_{3 z}),\\&x_{n+1}=x_n+\frac{k_{1x}}{6}+\frac{k_{2x}}{3}+\frac{k_{3x}}{ 3}+\frac{k_{4x}}{6},\\&y_{n+1}=y_n+\frac{k_{1y}}{6}+\frac{k_{2y}}{3}+\frac{k_{3y}}{ 3}+\frac{k_{4y}}{6},\\&z_{n+1}=z_n+\frac{k_{1z}}{6}+\frac{k_{2z}}{3}+\frac{k_{3z}}{ 3}+\frac{k_{4z}}{6}, \end{aligned}其中,$k_{1x}$,$k_{1y}$,$k_{1z}$,$k_{2x}$,$k_{2y}$,$k_{2z}$,$k_{3x}$,$k_{3y}$,$k_{3z}$,$k_{4x}$,$k_{4y}$,$k_{4z}$是微分方程组中导数的值。
数值计算中的常微分方程数值模拟在数值计算中,常微分方程(Ordinary Differential Equations,简称ODE)是一个重要的研究对象。
常微分方程的数值模拟是通过数值方法对其进行近似求解的过程,该过程对于模拟物理系统、生物学过程以及工程问题等具有重要意义。
本文将介绍常微分方程数值模拟的几种常用方法,并分析其特点与应用。
一、欧拉法(Euler's Method)欧拉法是最简单的常微分方程数值模拟方法之一,其基本思想是将连续的微分方程进行离散化,使用一阶差分近似代替微分。
具体步骤如下:1. 建立微分方程:设待求解的微分方程为dy/dx = f(x, y),其中f(x, y)为已知函数。
2. 初始化:选择初始条件y0 = y(x0),以及离散步长h。
3. 迭代求解:根据欧拉法的迭代公式yn+1 = yn + h * f(xn, yn)进行近似求解。
欧拉法的优点是简单易实现,但在处理复杂问题和大步长时存在精度较低的问题。
二、改进的欧拉法(Improved Euler's Method)为了提高欧拉法的精度,改进的欧拉法在迭代过程中使用两个不同的斜率近似值,从而对解进行更准确的预测并修正。
具体步骤如下:1. 建立微分方程:同欧拉法。
2. 初始化:同欧拉法。
3. 迭代求解:根据改进的欧拉法的迭代公式yn+1 = yn + h * (k1 +k2)/2进行近似求解,其中k1 = f(xn, yn),k2 = f(xn + h, yn + h * k1)。
改进的欧拉法在精度上优于欧拉法,但仍然不适用于高精度要求的问题。
三、龙格-库塔法(Runge-Kutta Methods)龙格-库塔法是一类常微分方程数值模拟方法,通过计算多个不同次数的斜率来逼近解。
其中,四阶龙格-库塔方法是最常用的一种方法。
具体步骤如下:1. 建立微分方程:同欧拉法。
2. 初始化:同欧拉法。
3. 迭代求解:根据四阶龙格-库塔方法的迭代公式yn+1 = yn + h * (k1 + 2k2 + 2k3 + k4)/6进行近似求解,其中k1 = f(xn, yn),k2 = f(xn + h/2, yn + h/2 * k1),k3 = f(xn + h/2, yn + h/2 * k2),k4 = f(xn + h, yn + h * k3)。
用改进的欧拉方法和四阶龙格-库塔方法解初值问题一、题目:取步长2.0=h ,分别用改进的欧拉方法和四阶龙格—库塔方法解初值问题⎩⎨⎧=≤≤+=.1)0(;10,'y x y x y 并比较结果。
二、基本思想:1.改进的欧拉方法改进的欧拉方法用梯形公式计算()()()()+1+1-=,.n n x n n x y x y x f x y x dx ⎰中的积分,并以n y 和+1n y 分别表示()n y x 和()+1n y x 的近似值,就得到()()()+1+1+1=+,+,.2n n n n n n h y y f x y f x y (梯形公式) 梯形公式也是一个一步法公式。
由于公式右端也含有未知的+1n y ,故被称作是隐式的。
隐式格式实际上是关于+1n y 的一个函数方程。
为了避免解方程,可以采用欧拉方法计算初始值,再由梯形公式计算。
这样建立起来的计算格式称为改进的欧拉格式:()()()()+1+1+1=+,,=+,+,.2p n n n n n n n n n y y hf x y h y y f x y f x y ⎧⎪⎨⎪⎩ 梯形公式也可以采用迭代法求解。
如果仍然采用欧拉方法计算迭代初值,那么计算格式就是[]()[]()[]()()0+1+1+1+1+1=+,,=+,+,.2n nn n k k n n n n n n y y hf x y h y y f x y f x y ⎧⎪⎨⎪⎩ 由于已假定(),f x y 满足里普希兹条件,所以有[][][]()[]()[][]+1-1-1+1+1+1,+1+1+1+1+1-=-,-.22k k k k k k n n n n n n n n h hL y y f x y f x y y y ≤ 从而,迭代的收敛条件是0<<1.2hL 2.四阶龙格-库塔方法龙格—库塔方法不是用求导数的办法,而是用计算不同点上()y x f ,的函数值,然后对这些函数值作线性拟合,构造近似公式。
资料范本本资料为word版本,可以直接编辑和打印,感谢您的下载微分方程常用的两种数值解法:欧拉方法与龙格—库塔法地点:__________________时间:__________________说明:本资料适用于约定双方经过谈判,协商而共同承认,共同遵守的责任与义务,仅供参考,文档可直接下载或修改,不需要的部分可直接删除,使用时请详细阅读内容四川师范大学本科毕业论文四川师范大学教务处二○一○年五月微分方程常用的两种数值解法:欧拉方法与龙格—库塔法学生姓名:xxx 指导教师:xx【内容摘要】微分方程是最有生命力的数学分支,在自然科学的许多领域中,都会遇到常微分方程的求解问题。
当前计算机的发展为常微分方程的应用及理论研究提供了非常有力的工具,利用计算机解微分方程主要使用数值方法,欧拉方法和龙格——库塔方法是求解微分方程最典型常用的数值方法。
本文详细研究了这两类数值计算方法的构造过程,分析了它们的优缺点,以及它们的收敛性,相容性,及稳定性。
讨论了步长的变化对数值方法的影响和系数不同的同阶龙格—库塔方法的差别。
通过编制C程序在计算机上实现这两类方法及对一些典型算例的结果分析比较,能更深切体会它们的功能,优缺点及适用场合,从而在实际应用中能对不同类型和不同要求的常微分方程会选取适当的求解方法。
关键词:显式单步法欧拉(Euler)方法龙格—库塔(Runge—Kutta)方法截断误差收敛性Two commonly used numerical solution of differential equations:Euler method and Runge - Kutta methodStudent Name: Xiong Shiying Tutor:Zhang Li【Abstract】The differential equation is the most vitality branch in mathematics. In many domains of natural science, we can meet the ordinary differential equation solution question. Currently, the development of computer has provided the extremely powerful tool for the ordinary differential equation application and the fundamental research, the computer solving differential equation mainly uses value method. The Euler method and the Runge—Kutta method are themost typical commonly value method to solve the differential equation. This article dissects the structure process of these two kinds of values commonly value method to solve the analyses their good and bad points, to their astringency, the compatibility, and the stabilityhas made the proof. At the same time, the article discuss the lengthof stride to the numerical method changing influence and thedifference of the coefficient different same step Runge—kutta method. Through establishing C program on the computer can realize these two kind of methods, Anglicizing some models of calculate example result can sincerely realize their function, the advantage and disadvantage points and the suitable situation, thus the suitable solution method can be selected to solve the different type and the different request ordinary differential equation in the practical application .Keywords: Explicit single-step process Euler method Runge—Kutta method truncation error convergence目录微分方程常用的两种数值解法:欧拉方法与龙格—库塔法前言常微分方程的形成与发展是和力学、天文学、物理学以及其他科学技术的发展密切相关的。
微分方程的数值解法与稳定性分析微分方程是研究自然现象和物理问题的重要数学工具。
在实际问题中,许多微分方程往往难以解析求解,因此需要借助计算机进行数值求解。
本文将介绍微分方程的数值解法以及稳定性分析。
一、欧拉法欧拉法是最简单、最基础的数值解法之一。
基本思想是将微分方程中的导数用差商逼近,得到差分方程,再求解差分方程以获得离散的数值解。
考虑一阶常微分方程 dy/dx = f(x, y),将自变量 x 分割为若干小区间,步长为 h。
欧拉法的迭代公式为 y_{i+1} = y_i + h * f(x_i, y_i),其中 y_i 和 x_i 是第 i 个点的数值解和自变量值。
欧拉法的简单易懂,但存在局限性。
当步长过大时,数值解的稳定性较差,可能出现数值误差增大、解发散等问题。
二、改进的欧拉法(改进欧拉法)为克服欧拉法的局限性,改进的欧拉法在迭代过程中增加了更高阶的差商项,提高了数值解的精度和稳定性。
举例说明,考虑一阶常微分方程 dy/dx = f(x, y),改进的欧拉法的迭代公式为 y_{i+1} = y_i + h * (f(x_i, y_i) + f(x_{i+1}, y_i + h * f(x_i, y_i))) / 2。
改进的欧拉法相比于欧拉法具有更好的数值稳定性和精度,但复杂度略高。
三、龙格-库塔法(RK方法)龙格-库塔法是一类常用的高精度数值解法,其思想是通过多个对函数 f(x, y) 的估计来提高数值解的准确性。
最常见的四阶龙格-库塔法(RK4)是利用四个不同的斜率估计来计算数值解。
其迭代公式为:k_1 = h * f(x_i, y_i)k_2 = h * f(x_i + h/2, y_i + k_1/2)k_3 = h * f(x_i + h/2, y_i + k_2/2)k_4 = h * f(x_i + h, y_i + k_3)y_{i+1} = y_i + (k_1 + 2k_2 + 2k_3 + k_4) / 6龙格-库塔法具有较高的精度和数值稳定性,适用于各种类型的微分方程。
解微分方程的欧拉法,龙格-库塔法简单实例比较 欧拉方法(Euler method)用以对给定初值的常微分方程(即初值问题)求解分为前EULER 法、后退EULER 法、改进的EULER 法。
缺点:
欧拉法简单地取切线的端点作为下一步的起点进行计算,当步数增多时,误差会因积累而越来越大。
因此欧拉格式一般不用于实际计算。
改进欧拉格式(向前欧拉公式):
为提高精度,需要在欧拉格式的基础上进行改进。
采用区间两端的斜率的平均值作为直线方程的斜率。
改进欧拉法的精度为二阶。
算法:
微分方程的本质特征是方程中含有导数项,数值解法的第一步就是设法消除其导数值。
对于常微分方程:
(,)dy f x y dx
= [,]x a b ∈ 0()y a y =
可以将区间[,]a b 分成n 段,那么方程在第i x 点有'()(,())i i i y x f x y x =,再用向前差商近似代替导数则为:
((1)())(,())i i i i y x y x f x y x h
+-= 在这里,h 是步长,即相邻两个结点间的距离。
因此可以根据i x 点和i y 的数值计算出1i y +来:
1(,)i i i i y y h f x y +=+⨯0,1,2,i L =L
这就是向前欧拉公式。
改进的欧拉公式:
将向前欧拉公式中的导数(,)i i f x y 改为微元两端导数的平均,即上式便是梯形的欧拉公式。
可见,上式是隐式格式,需要迭代求解。
为了便于求解,使用改进的欧拉公式: 数值分析中,龙格-库塔法(Runge-Kutta )是用于模拟常微分方程的解的重要的一类隐式或显式迭代法。
实际上,龙格-库塔法是欧拉方法的一种推广,向前欧拉公式将导数项简单取为(,)n n f x y ,而改进的欧拉公式将导数项取为两端导数的平均。
龙格-库塔方法的基本思想:
在区间1[,]n n x x +内多取几个点,将他们的斜率加权平均,作为导数的近似。
龙格库塔法的家族中的一个成员如此常用,以至于经常被称为“RK4”或者就是“龙格库塔法”。
令初值问题表述如下。
'(,)y f t y =00()y t y =
则,对于该问题的RK4由如下方程给出:
11234(22)6
n n h y y k k k k +=++++ 其中
1(,)n n k f t y =
21(,)22
n n h h k f t y k =++ 32(,)22
n n h h k f t y k =++ 43(,)n n k f t h y hk =++
这样,下一个值1n y +由现在的值n y 加上时间间隔h 和一个估算的斜率的乘积决定。
该斜率是以下斜率的加权平均:
1k 是时间段开始时的斜率;
2k 是时间段中点的斜率,通过欧拉法采用斜率1k 来决定y 在点2
n h t +的值;
3k 也是中点的斜率,但是这次采用斜率2k 决定y 值;
4k 是时间段终点的斜率,其y 值用3k 决定。
当四个斜率取平均时,中点的斜率有更大的权值: 1234226
k k k k slope +++= RK4法是四阶方法,也就是说每步的误差是5h 阶,而总积累误差为4
h 阶。
注
意上述公式对于标量或者向量函数(y 可以是向量)都适用。
例子:0.2;0::4h x h ==
下面给出了数值求解该微分方程的简单程序。
其中1234,,,y y y y 分别为向前欧拉公式,改进的欧拉公式,4级4阶龙格-库塔公式及精确解。
结果分析:
图1中显示在2x <时,3种算法与精确值较接近,即误差不大,但当x 继续增加时则4级4阶龙格库塔法较精确,但也有一定限度,当 3.5x >时,计算值与精确值得差别将越来越大。
从图2中可以清楚的看到这一结果,其中141''y y y →-,242''y y y →-,343''y y y →-。
图1
图2
瑞刷Ytv4f988JQod。