- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
欧拉方法(前、后)和改进的欧拉方法优点是算法简单,但计算精度较低,不能满足实际问题求解对精度的要求,所以使用较少。 龙格-库塔(R-K)方法就是一种精度较高的较为实用计算常微分方程的方法。 从以上三种方法的比较,可以推测:若取多点处斜率的加权平均作为平均斜率,精度会更高,这就是龙格—库塔法的基本思想。 四阶龙格—库塔法计算公式为: 整体截断误差: O(h4) 例题: time_Euler = 0.2500 time_EulerPro = 0.5000 time_RK4 = 1.0150 4、 MATLAB的常微分方程函数 ode45 ode23 ode113 ode15s ode23s ode23t ode23tb 格式 [x,y]=ode45(′ fun′, [x0,xn], y0,option] 说明: 适用于求解一阶常微分方程组 fun定义微分方程组的函数文件名 [x0,xn]求解区域 y0初始条件向量 option可选参数,由ODESET函数设置,比较复杂 x输出自变量向量,y输出[y, y ′, y ″,..] 没有一种算法可以有效地解决所有的 ODE 问题,因此MATLAB 提供了多种ODE函数。 函数 ODE类型 特点 说明 ode45 非刚性 单步法;4,5 阶 R-K 方法;累计截断误差为 (△x)3 大部分场合的首选方法 ode23 非刚性 单步法;2,3 阶 R-K 方法;累计截断误差为 (△x)3 使用于精度较低的情形 ode113 非刚性 多步法;Adams算法;高低精度均可到 10-3~10-6 计算时间比 ode45 短 ode23t 适度刚性 采用梯形算法 适度刚性情形 ode15s 刚性 多步法;Gear’s 反向数值微分;精度中等 若 ode45 失效时,可尝试使用 ode23s 刚性 单步法;2 阶Rosebrock 算法;低精度 当精度较低时,计算时间比 ode15s 短 ode23tb 刚性 梯形算法;低精度 当精度较低时,计算时间比ode15s短 例题 二、三阶龙格库塔法 例题 四、五阶龙格库塔法 t1 = 0.0310 t2 = 0.0160 例题:用MATLAB的符号解法,求解常微分方程: dsolve(Dy+3*x*y=x*exp(-x^2)) ans = (1/3*exp(-x*(x-3*t))+C1)*exp(-3*x*t) dsolve(Dy+3*x*y=x*exp(-x^2),x) ans = exp(-x^2)+exp(-3/2*x^2)*C1 科学计算与MATLAB 常微分方程数值解法 内容提要 引言 欧拉近似方法 龙格-库塔(R-K)方法 MATLAB的常微分方程函数 小结 1、引言 物理学所研究的各种物质运动中,有许多物质运动的过程是用常微分方程来描述的。 例如,质点的加速运动,简谐振动等。 简单问题可以求得解析解,多数实际问题靠数值求解。 一阶常微分方程(ODE )初值问题 : 数值解法就是求y(x)在某些分立的节点 xn 上的近似值yn,用以近似y(xn) ODE :Ordinary Differential Equation 2.1 简单欧拉(L.Euler, 1707-1783)方法。 欧拉数值算法就是由初值通过递推求解,递推求解就是从初值开始,后一个函数值由前一个函数值得到。关键是构造递推公式。 2、欧拉近似方法 欧拉数值算法递推公式构造 2.1.1 差分法 差分法就是用差商近似代替微商,即 代入微分方程得到: 对于等间隔节点 可以得到: xn x0 x1 x2 …. xn …. y精确值 y(x0) y(x1) y(x2) …. y(xn) …. y近似值 y0 y1 y2 …. yn …. 在xn节点上,微分方程可以写为 作如下近似: 则得到欧拉解法递推公式的一般形式: 具体求解过程为: 简单欧拉方法程序 function [outx,outy]=MyEuler(fun,x0,xt,y0,PointNum) %MyEuler 用前向差分的欧拉方法解微分方程 %fun 表示f(x,y) %x0,xt表示自变量的初值和终值 %y0表示函数在x0处的值,其可以为向量形式 %PointNum表示自变量在[x0,xt]上取的点数 if nargin5 | PointNum=0 %如果函数仅输入4个参数值,则PointNum默认值为100
文档评论(0)