第十章-常微分方程的初值问题.pptVIP

  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文档。上传文档
查看更多
第十章-常微分方程的初值问题.ppt

3、高阶ODE问题 二阶龙格-库塔方法可以类似适用于高阶ODE。 考虑 其中 是常数或 的函数。 设: 则: 其二阶龙格-库塔方法的格式为: 写为向量形式: 其中: 则二阶龙格-库塔方法格式为: * * 第十章 常微分方程的初值问题 只含有未知函数的一个或多个寻常导数的方程叫常微分方程,简写为ODE。方程的阶数为最高阶导数的阶数。 求解ODE问题可以归结为初值问题和边值问题,这取决于区域边界的条件是否已知。所有初值问题的条件在初始点都是已知的,如果末端点的条件也已知,则该问题就变为边值问题。在时间区域内的ODE都是初值问题,因此在初始时刻 的所有条件都是已知的。 一阶ODE问题的形式 其中, 是 的函数,第二个方程是初始条件, 是求解方程必不可少的条件。方程中,一阶导数也是 的函数,我们通过数值积分 求出未知函数 。 如果 无关,则计算变为第5章中讨论的任一种 直接积分方法应用 。 其中 是常数或 的函数,这样原方程就变为线性 ODE。如果 不是线性函数,方程就称为非线性ODE。 有些ODE问题可以求出解析解,但大多数ODE都没有解析解,这也是数值方法变得如此重要的原因。 设 的线性函数,如: 如果 的函数 ,积分过程将不同于前者。 Euler(欧拉)方法是求解一阶ODE的一种简 便方法。尽管精度不高,但由于简单,特别适用于快速编程求解。它有三种格式: 一、Euler 方法 (a)向前Euler 法 (b)改进的Euler 法 (c)向后Euler法 介绍这些方法是为了了解初值问题求解的基本思想。 1、向前Euler法 将向前差分公式改写,即得 的向前Euler法。 要增加时间步数,只需反复调用上式: 例1 求解 其中 ,并画图。 t = 0; n=0; v=0; C = 0.27; M = 70; g = 9.8; h = 0.1; t_rec(1)=t; v_rec(1) = v; while t20 n=n+1; v = v + h*( -C/M*v*v + g); t = t+h; v_rec(n+1) = v; t_rec(n+1) = t; end plot(t_rec,v_rec);axis([0,20,0,60]) 尽管向前Euler法非常简单,但有两种误差效应:第一种是截断误差,第二种误差源于计算的不稳定性。当方程的时间系数为负值,h又不是很小时,第二种误差就会增加。带有负时间系数的常见方程为 其精确解为 该问题的向前Euler格式为: 如果 ,数值解为正的趋于零;如果 ,随n的增加,解的符号交替改变;如果 ,则在每一步符号变化后,解的数量级增加,最终导致结果发散。 2、改进的Euler法 将梯形公式用于求解 可得改进的Euler法: 如果 f 是 y 的线性函数,则从上式易得出 。 例如,设 则 解得: 如果 f 是 y 的非线性函数,则式 1 也是 的非线性函数,所以需要到非线性方程的求解算法。 逐次代换法的形式为: 如果初值设为 ,则第一步迭代相当于向前Euler 法,如果每步只有两次迭代,这种方法就称为二阶龙格-库塔(Runge-kutta)方法。 例2 初值问题: 求解 的值。 向前Euler法: yf(1) = 10; t(1) = 0; h = 0.1; n=1; while t(n)1 n = n+1; t(n) = t(n-1) + h; yf(n) = yf(n-1) + h*( -yf(n-1)^1.5 + 1); end 迭代5步结果: ym(1) = 10; t(1) = 0; h = 0.1; n=1; while t(n)1 n = n+1; t(n) = t(n-1) + h; ym(n) = ym(n-1) + h*( - ym(n-1)^1.5 + 1); ymb = 1e10; while abs(ym(n) - ymb) 0.00001 y

文档评论(0)

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

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

版权声明书
用户编号:8073070133000003

1亿VIP精品文档

相关文档