NA005a微分方程求解.ppt

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
NA005a微分方程求解

第五章 常微分方程数值解 /* Numerical Methods for Ordinary Differential Equations */ ? 考虑一阶常微分方程的初值问题 /* Initial-Value Problem */: 只要 f (x, y) 在[a, b] ? R1 上连续,且关于 y 满足 Lipschitz 条件,即存在与 x, y 无关的常数 L 使 对任意定义在 [a, b] 上的 y1(x) 和 y2(x) 都成立,则上述IVP存在唯一解。 本章的任务:计算出解函数 y(x) 在一系列节点 a = x0 x1… xn= b 处的近似值 。 建立常微分方程数值方法的基本思想 微分方程数值解法,其实是求出方程的解 在一系列离散点上的近似值。则微分方程数值解的基本思想是:求解区间和方程离散化。 将求解区间 离散化,是在 上插入一系列的分点 ,使 , 求解区间离散化 ? 记 称为步长,一般取hn = h 称为等步长节点 。 (常数),节点为 然后将上式右端采用第四章介绍的数值积分离散化, 从而获得原初值问题的一个离散差分格式。 将微分方程离散化 ? 将微分方程离散化,通常有下述方法: (1)差商逼近法 即是用适当的差商逼近导数值。 (2)数值积分法 基本思想是先将问题转化为积分方程 (3)Taylor展开法 见后面的叙述。 §1 欧拉方法 /* Euler’s Method */ ? 欧拉公式: x0 x1 向前差商近似导数 记为 亦称为欧拉折线法 /* Euler’s polygonal arc method*/ 例. 求初值问题 解:本题的Euler公式的具体形式为 §1 Euler’s Method 1.7321 1.7848 1.0 1.4142 1.4351 0.5 1.6733 1.7178 0.9 1.2416 1.3582 0.4 1.6125 1.6498 0.8 1.2649 1.2774 0.3 1.5492 1.5803 0.7 1.1832 1.1918 0.2 1.4832 1.5090 0.6 1.0954 1.1000 0.1 如果说表格仍不够直观的话,我们用Matlab做出积分曲线与近似值的图,如下: 取步长h=0.1。我们将计算结果与其解析解的精确值一同列在下表中,其中 是节点, 是节点上的近似值, 是精确值,结果见下表: §1 Euler’s Method 从图中可以看出,灰色连续的曲线就是初值问题的解析解 的曲线。而红色的星点便是数值解。在图上似乎 数值解与曲线的偏差不是很大,但不要忘记这只是在0到1范围 内的。通过后面用其他方法解本题,大家便会发现Euler方法误 差其实是很大的。 Matlab作图显示 §1 Euler’s Method §1 Euler’s Method ? 隐式欧拉法 /* implicit Euler method */ 向后差商近似导数 x0 x1 )) ( , ( ) ( 1 1 0 1 x y x f h y x y + ? ) , , ( = + y 1 ( + f h 1 1 ... 0 , 1 + N n x n - = y y n n n ) + 由于未知数 yn+1 同时出现在等式的两边, 不能直接得到,故称为隐式 /* implicit */ 欧拉公式,而前者称为显式 /* explicit */ 欧拉公式。 一般先用显式计算一个初值,再迭代求解。即 如果迭代过程收敛,则某步后 就可以作为 ,从而进行下一步的计算。 梯形方法的平均化思想 可以借助几何直观说明,同 Euler方法的图,见右: §1 Euler’s Method ? 梯形公式 /* trapezoid formula */ — 显、隐式两种算法的平均 ? 两步欧拉公式 /* midpoint formula */ 中心差商近似导数 x0 x2 x1 需要2个初值 y0和 y1来启动递推 过程,这样的算法称为两步法 /* double-step method */,而前面的三种算法都是单步法 /* single-step method */。 ? 改进欧拉法 /* modified Euler’s method */ Step 1: 先用

文档评论(0)

有一二三 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档