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

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Euler方法与改进的Euler方法的应用

CENTRAL SOUTH UNIVERSITY 数值分析实验报告 Euler方法与改进的Euler方法的应用 一、问题背景 在工程和科学技术的实际问题中,常需求解微分方程,但常微分方程中往往只有少数较简单和典型的常微分方程(例如线性常系数常微分方程等)可求出其解析解,对于变系数常微分方程的解析求解就比较困难,而一般的非线性常微分方程的求解困难就更不用说了。大多数情况下,常微分方程只能用近似方法求解。这种近似解法可分为两大类:一类是近似解析法,如级数解法、逐次逼近法等;另一类是数值解法,它给出方程在一些离散点上的近似值。 二、数学模型 在具体求解微分方程时,需具备某种定解条件,微分方程和定解条件合在一起组成定解问题。定解条件有两种:一种是给出积分曲线在初始点的状态,称为初始条件,相应的定解问题称为初值问题。另一类是给出积分曲线首尾两端的状态,称为边界条件,相应的定解问题称为边值问题。在本文中主要讨论的是给定初值条件的简单Euler方法和改进的Euler方法来求解常微分方程。 三、算法及流程 Euler方法是最简单的一种显式单步法。对于方程 考虑用差商代替导数进行计算,取离散化点列 , 则得到方程的近似式 即 得到简单Euler方法。具体计算时由出发,根据初值,逐步递推二得到系列离散数值。 简单Euler方法计算量小,然而精度却不高,因而我们可以构造梯形公式 其中。这是一个二阶方法,比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)/N; % 步长h t=t0+[0:N]*h; % 时间t x(1,:) = x0; % 赋初值 for k = 1:N f=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; %表示出离散的自变量x x(1,:)=x0; for i=1:N f1=h*feval(fun,t(i),x(i,:)); f1=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保存。 function f=GjEuler(t,x) f=1/t*(x^2+x); 再编写主函数文件,打开Editor编辑器,输入下列语句并以文件名GjEuler_main.m保存文件。 function GjEuler_main() % 比较改进Euler法、简单Euler法及文芬方程符号解 [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); % 符号计算 for k=1:16 % 时间离散化 st(k)=t(k); % 取数值方法的离散的时间 sx(k)=subs(sh,st(k)); end plot(t,x,*,tgj,xgj,+

文档评论(0)

yaobanwd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档