实验8欧拉法_改进欧拉法_线性多步法
- 格式:doc
- 大小:95.50 KB
- 文档页数:3
分别利用欧拉法和改进欧拉法求解微分方程组的数值解欧拉法(Euler’s Method)和改进欧拉法(Improved Euler’s Method),是求解常微分方程数值解的两种常用方法。
它们都属于一阶精度的显式迭代算法。
首先,我们来介绍一下欧拉法。
欧拉法是一种简单的数值求解算法,它基于微分方程的定义,将微分方程转化为差分方程。
考虑一个一阶常微分方程 dy/dx = f(x, y),并给定初始条件 y(x0)= y0,我们希望求解在给定区间 [x0, xn] 上方程的数值解。
首先,我们将区间 [x0, xn] 平均分成 N 个小区间,每个小区间的长度为 h = (xn - x0) / N。
然后,我们可以使用以下的欧拉迭代公式计算数值解:y[i+1] = y[i] + h * f(x[i], y[i])其中,x[i] = x0 + i * h,y[i] 是在点 x[i] 处的数值解。
通过不断迭代上述公式,我们可以获得[x0, xn] 上微分方程的数值解。
欧拉法的优点在于简单易懂,计算速度较快。
然而,欧拉法的缺点是精度较低,误差随着步长h 的增大而增大。
为了提高精度,我们可以使用改进欧拉法。
改进欧拉法,也称为龙格–库塔算法(Runge-Kutta Method)或四阶龙格–库塔方法,是一种基于欧拉法的改进算法。
改进欧拉法使用了更多的近似取值,以减小误差。
与欧拉法类似,我们将区间 [x0, xn] 平均分成 N 个小区间,每个小区间的长度为 h = (xn - x0) / N。
然后,我们可以使用以下的公式计算数值解:k1 = h * f(x[i], y[i])k2 = h * f(x[i] + h/2, y[i] + k1/2)y[i+1] = y[i] + k2其中,k1 和 k2 是计算过程中的辅助变量。
通过不断迭代上述公式,我们可以获得 [x0, xn] 上微分方程的数值解。
改进欧拉法相对于欧拉法而言,计算精度更高。
第8章 常微分方程数值解法本章主要内容:1.欧拉法、改进欧拉法. 2.龙格-库塔法。
3.单步法的收敛性与稳定性。
重点、难点一、微分方程的数值解法在工程技术或自然科学中,我们会遇到的许多微分方程的问题,而我们只能对其中具有较简单形式的微分方程才能够求出它们的精确解。
对于大量的微分方程问题我们需要考虑求它们的满足一定精度要求的近似解的方法,称为微分方程的数值解法。
本章我们主要讨论常微分方程初值问题⎪⎩⎪⎨⎧==00)(),(yx y y x f dx dy的数值解法。
数值解法的基本思想是:在常微分方程初值问题解的存在区间[a,b]内,取n+1个节点a=x 0<x 1<…<x N =b (其中差h n = x n –x n-1称为步长,一般取h 为常数,即等步长),在这些节点上把常微分方程的初值问题离散化为差分方程的相应问题,再求出这些点的上的差分方程值作为相应的微分方程的近似值(满足精度要求)。
二、欧拉法与改进欧拉法欧拉法与改进欧拉法是用数值积分方法对微分方程进行离散化的一种方法。
将常微分方程),(y x f y ='变为()*+=⎰++11))(,()()(n xn x n n dtt y t f x y x y1.欧拉法(欧拉折线法)欧拉法是求解常微分方程初值问题的一种最简单的数值解法。
欧拉法的基本思想:用左矩阵公式计算(*)式右端积分,则得欧拉法的计算公式为:Nab h N n y x hf y y n n n n -=-=+=+)1,...,1,0(),(1 欧拉法局部截断误差11121)(2++++≤≤''=n n n n n x x y h R ξξ或简记为O (h 2)。
我们在计算时应注意欧拉法是一阶方法,计算误差较大。
欧拉法的几何意义:过点A 0(x 0,y 0),A 1(x 1,y 1),…,A n (x n ,y n ),斜率分别为f (x 0,y 0),f (x 1,y 1),…,f (x n ,y n )所连接的一条折线,所以欧拉法亦称为欧拉折线法。
[例1]用欧拉方法与改进的欧拉方法求初值问题h 的数值解。
在区间[0,1]上取0.1[解]欧拉方法的计算公式为x0=0;y0=1;x(1)=0.1;y(1)=y0+0.1*2*x0/(3*y0^2);for n=1:9x(n+1)=0.1*(n+1);y(n+1)=y(n)+0.1*2*x(n)/(3*y(n)^2);end;xy结果为x =Columns 1 through 80.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 Columns 9 through 100.9000 1.0000y =Columns 1 through 81.0000 1.0067 1.0198 1.0391 1.0638 1.0932 1.1267 1.1634 Columns 9 through 101.2028 1.2443改进的欧拉方法其计算公式为本题的精确解为()y x=x0=0;y0=1;ya(1)=y0+0.1*2*x0/(3*y0^2);y(1)=y0+0.05*(2*x0/(3*y0^2)+2*x0/(3*ya^2));for n=1:9x(n+1)=0.1*(n+1);ya(n+1)=ya(n)+0.1*2*x(n)/(3*ya(n)^2);y(n+1)=y(n)+0.05*(2*x(n)/(3*y(n)^2)+2*x(n+1)/(3*ya(n+1)^2));end;xy结果为x =Columns 1 through 80.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 Columns 9 through 100.9000 1.0000y =Columns 1 through 81.0000 1.0099 1.0261 1.0479 1.0748 1.1059 1.1407 1.1783 Columns 9 through 101.2183 1.2600[例2]用泰勒方法解x=0.1, 0.2, …, 1.0处的数值解,并与精确解进行比较。
数值计算中的常微分方程数值模拟在数值计算中,常微分方程(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)。
《微分方程数值解法》课程实验报告一. 改进欧拉方法背影材料欧拉公式是指以欧拉命名的诸多公式。
其中最著名的有,复变函数中的欧拉幅角公式--将复数、指数函数与三角函数联系起来; 拓扑学中的欧拉多面体公式;初等数论中的欧拉函数公式。
此外还包括其他一些欧拉公式,比如分式公式等等1.1建立模型⎪⎩⎪⎨⎧=++=0)0(y 1x142xy y , 设:1.022=-=a b h 05.0212=-=a b h 1.2利用C++编程实现:源程序:#include"stdio.h"#include"iostream"using namespace std;double x,x1,y,y1;int main(){double h;int n;cout<<endl<<"input x0=";cin>>x0;cout<<endl<<"input y0=";cin>>y0;cout<<endl<<"intput h=";cin>>h;cout<<endl<<"intput n=";cin>>n;mend_euler euler(h,n);getch();return 1;}class mend_euler{public:mend_euler(double h,int n);double f(double x,double y);private:double h;int n;};mend_euler::mend_euler(double a,int b){int i=1;h=a;n=b;while(i<=n){x1=x0+h;y1=y0+h/2*(f(x0,y0)+f(x1,y0+h*f(x0,y0))); cout<<endl;cout<<"x1="<<x1<<" y1="<<y1<<" y="<<x0/(1+x0*x0)<<" e="<<y1-x0/(1+x0*x0)<<endl;i++;x0=x1;y0=y1;}}double mend_euler::f(double x,double y){return 4*x*y/(1+x*x)+1;}1.3程序实现1.4总结:从本次实验结果我们可以看出在曲不同的步长H时欧拉公式的y 值由不同的精确值,从而在实际的应用中我们要根据实际情况取得相应的步长,从而达到精度和效率的最优化。
CENTRAL SOUTH UNIVERSITY 数值分析实验报告Euler 方法与改进的Euler 方法的应用一、问题背景在工程和科学技术的实际问题中,常需求解微分方程,但常微分方程中往往只有少数较简单和典型的常微分方程(例如线性常系数常微分方程等)可求出其解析解,对于变系数常微分方程的解析求解就比较困难,而一般的非线性常微分方程的求解困难就更不用说了。
大多数情况下,常微分方程只能用近似方法求解。
这种近似解法可分为两大类:一类是近似解析法,如级数解法、逐次逼近法等;另一类是数值解法,它给出方程在一些离散点上的近似值。
二、数学模型在具体求解微分方程时,需具备某种定解条件,微分方程和定解条件合在一起组成定解问题。
定解条件有两种:一种是给出积分曲线在初始点的状态,称为初始条件,相应的定解问题称为初值问题。
另一类是给出积分曲线首尾两端的状态,称为边界条件,相应的定解问题称为边值问题。
在本文中主要讨论的是给定初值条件的简单Euler 方法和改进的Euler 方法来求解常微分方程。
三、算法及流程Euler 方法是最简单的一种显式单步法。
对于方程()y x f dxdy ,= 考虑用差商代替导数进行计算,取离散化点列nh x x n +=0,L n ,2,1,0=则得到方程的近似式()()()()n n n n x y x f hx y x y ,1≈-+ 即()n n n n y x hf y y ,1+=+ 得到简单Euler 方法。
具体计算时由0x 出发,根据初值,逐步递推二得到系列离散数值。
简单Euler 方法计算量小,然而精度却不高,因而我们可以构造梯形公式()()[]η=++=+++0111,,2y y t f y t f h y y n n n n n n 其中()N a b h -=。
这是一个二阶方法,比Euler 方法精度高。
但是上述公式右边有1+n y ,因而是隐式差分方程,可以用迭代方法计算1+n y 。
欧拉法、改进的欧拉法、龙格-库塔法求解初值问题欧拉法、改进的欧拉法、龙格-库塔法求解初值问题简介通过求解简单的初值问题:dudx =f (x ,u )(1)u (x 0)=u 0(2)引⼊欧拉法、改进的欧拉法、龙格-库塔法等。
前期准备数值解法的基本思想就是先对x 和u(x)在区间[x0,∞)上进⾏离散化,然后构造递推公式,再进⼀步得到u(x)u(x) u(x)u(x)u(x)u(x)在这些位置的近似取值。
取定步长h ,令x n =x 0+nh (n =±1,±2,⋯)得到离散的位置:x 1,x 2,⋯,x n ,u(x)在这些点精确取值为:u (x 1),u (x 2),⋯,u (x n )利⽤数值解法得到的这些点的近似取值,u 1,u 2,⋯,u n欧拉法欧拉法的核⼼就是将导数近似为差商。
将导数近似为向前差商,则有:du dxx =x n≈u x n +1−u x nh代⼊(1)式,有:u x n +1=y x n +hf x n ‖u x n⽤u n +1和 u n 代替u (x n +1)和u (x n ),得:u n +1=u n +hf x n ,u n因此,若知道u 0我们就可以递归出u 1,u 2,⋯如果将导数近似为向后差商:du dxx =x n≈u x n −u x n −1h类似的,就可以得到:u n −1=u n −hf x n ,u n这样,若知道u 0我们就可以递归出u −1,u −2⋯改进的欧拉法对(1)式在[x n ,x n +1]上积分,可得:u x n +1=u x n +∫xn +1x nf (x ,u )dx其中,n =0,1,⋯⽤不同⽅式来近似上式的积分运算,就会得到不同的递推公式。
若使⽤左端点计算矩形⾯积并取近似:∫x n +1x nf (x ,u )dx ≈hf x n +1,u x n +1代⼊上式得:{|()()()()(())()|()()()()()(())u n +1=u n +hf (x n ,u n )若使⽤梯形的⾯积做近似:∫x n +1x nf (x ,y )dx ≈h2f x n ,u x n+f x n +1,ux n +1得到:u n +1=u n +h2f x n ,u n +f x n +1,u n +1欧拉法虽然精度偏低,但它是显式的,可直接得到结果。