Euler方法与改进的Euler方法的应用

Euler方法与改进的Euler方法的应用

ID:47486804

大小:545.00 KB

页数:6页

时间:2020-01-12

Euler方法与改进的Euler方法的应用_第1页
Euler方法与改进的Euler方法的应用_第2页
Euler方法与改进的Euler方法的应用_第3页
Euler方法与改进的Euler方法的应用_第4页
Euler方法与改进的Euler方法的应用_第5页
资源描述:

《Euler方法与改进的Euler方法的应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、CENTRALSOUTHUNIVERSITY数值分析实验报告Euler方法与改进的Euler方法的应用一、问题背景在工程和科学技术的实际问题中,常需求解微分方程,但常微分方程中往往只有少数较简单和典型的常微分方程(例如线性常系数常微分方程等)可求出其解析解,对于变系数常微分方程的解析求解就比较困难,而一般的非线性常微分方程的求解困难就更不用说了。大多数情况下,常微分方程只能用近似方法求解。这种近似解法可分为两大类:一类是近似解析法,如级数解法、逐次逼近法等;另一类是数值解法,它给出方程在一些离散点上的近似值。二、数学模型在具体求解微分方程时,需具备某种定解条件,微分方程

2、和定解条件合在一起组成定解问题。定解条件有两种:一种是给出积分曲线在初始点的状态,称为初始条件,相应的定解问题称为初值问题。另一类是给出积分曲线首尾两端的状态,称为边界条件,相应的定解问题称为边值问题。在本文中主要讨论的是给定初值条件的简单Euler方法和改进的Euler方法来求解常微分方程。三、算法及流程Euler方法是最简单的一种显式单步法。对于方程考虑用差商代替导数进行计算,取离散化点列,则得到方程的近似式即得到简单Euler方法。具体计算时由出发,根据初值,逐步递推二得到系列离散数值。简单Euler方法计算量小,然而精度却不高,因而我们可以构造梯形公式其中。这是

3、一个二阶方法,比Euler方法精度高。但是上述公式右边有,因而是隐式差分方程,可以用迭代方法计算。初值可以由Euler公式提供,一般而言迭代一两次即可。在计算中的迭代公式为容易看出这实际上是一种预估-校正方法。改进的Euler方法又称为Henu方法。MATLAB实现过程:(1)简单Euler方法函数function[t,x]=Euler(fun,t0,tt,x0,N)%MyEuler用前向差分的欧拉方法解微分方程%fun表示f(t,x)%t0,tt表示自变量的初值和终值%x0表示函数在x0处的值,其可以为向量形式%N表示自变量在[t0,tt]上取得点数h=(tt-t0)

4、/N;%步长ht=t0+[0:N]'*h;%时间tx(1,:)=x0';%赋初值fork=1:Nf=feval(fun,t(k),x(k,:));f=f';x(k+1,:)=x(k,:)+h*f;end将文件以文件名Euler.m保存。(2)改进的Euler方法函数function[t,x]=GjEuler(fun,t0,tt,x0,N)%改进的Euler方法解微分方程h=(tt-t0)/N;%计算所取的两离散点之间的距离t=t0+[0:N]'*h;%表示出离散的自变量xx(1,:)=x0';fori=1:Nf1=h*feval(fun,t(i),x(i,:));f1=

5、f1';f2=h*feval(fun,t(i+1),x(i,:)+f1);f2=f2';x(i+1,:)=x(i,:)+1/2*(f1+f2);end将文件以文件名GjEuler.m保存。四、计算结果与分析计算常微分方程的初值问题编写函数文件,打开Editor编辑器,输入以下语句并以文件名GjEuler.m保存。functionf=GjEuler(t,x)f=1/t*(x^2+x);再编写主函数文件,打开Editor编辑器,输入下列语句并以文件名GjEuler_main.m保存文件。functionGjEuler_main()%比较改进Euler法、简单Euler法及文

6、芬方程符号解[t,x]=Euler('GjEuler_fun',1,3,-2,15);%Euler方法¨[tgj,xgj]=GjEuler('GjEuler_fun',1,3,-2,15);%改进的Euler方法的解sh=dsolve('Dx=1/t*(x^2+x)','x(1)=-2','t');%符号计算fork=1:16%时间离散化st(k)=t(k);%取数值方法的离散的时间sx(k)=subs(sh,st(k));endplot(t,x,'*',tgj,xgj,'+',st,sx)[t,x,xgj,sx']%t时间%x简单Euler方法计算结果%xgj改进Eu

7、ler方法的计算结果%sx符号计算结果[t,sx'-x,sx'-xgj]%两种方法的计算误差%plot(t,sx'-x,'+',t,sx'-xgj,'*')运行程序,在MATLAB命令窗口输入:>>GjEuler_main运行结果如下所示:ans=[1,-2,-2,-2][17/15,-26/15,-6854/3825,-34/19][19/15,-6058/3825,-3726675967822917/2251799813685248,-38/23][7/5,-6694439885567781/4503599627370496,-438

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。