《第五讲第4章线性多步法(续》由会员分享,可在线阅读,更多相关《第五讲第4章线性多步法(续(15页珍藏版)》请在人人文库网上搜索。

1、第4章 线性多步法4.1 线性多步法的一般公式前面给出了求解初值问题(1.2.1)的单步法,其特点是计算 时只用到 的值,此时 的值均已算出.如果在计算 时除用 的值外,还用到 的值,这就是多步法.若记,h为步长,则线性多步法可表示为(4.1.1)其中为常数,若(即不同时为零),称(4.1.1)为线性k步法.计算时用到前面已算出的k个值.当时,(4.1.1)为显式多步方法,当则称(4.1.1)为隐式多步法.隐式方法与梯形方法一样,计算时要用迭代法求.多步法(4.1.1)的局部截断误差定义也与单步法类似.举例来说,对于初值问题,步数k=2时,线性多步法表示为当时,格式为显示的:,而时,格式为隐式。

2、的:。定义4.1设y(x)是初值问题(1.2.1)的精确解,线性多步法(4.1.1)在处的局部截断误差定义为(4.1.2)若,则称线性多步法(4.1.1)是p阶的.如果我们希望得到的多步法是p阶的,则可利用Taylor公式展开,将在处展开到阶,它可表示为(4.1.3)注意,(4.1.2)式按Taylor展开可得经整理比较系数可得(4.1.4)若线性多步法(4.1.1)为p阶,则可令于是得局部截断误差(4.1.5)右端第一项称为局部截断误差主项.称为误差常数.要使多步法(4.1.1)逼近初值问题(1.2.1),方法的阶p1,当p=1时,则,由(4.1.4)得(4.1.6)称为相容性条件.公式(4。

3、.1.1)当k=1时即为单步法,若,由(4.1.6)则得式(4.1.1)就是,即为Euler法.此时,方法为p=1阶.若,由得,为确定及,必须令,由(4.1.4)得及此时(4.1.1)就是即为梯形法.由故p=2,方法是二阶的,与3.1节中给出的结果相同.实际上,当k给定后,则可利用(4.1.4)求出公式(4.1.1)中的系数及,并求得的表达式(4.1.5).4.2 Adams显式与隐式方法形如(4.2.1)的k步法称为 Adams 方法,当 时为 Adams 显式方法,当时,称为Adams隐式方法.对初值问题(1.2.1)的方程两端从到积分得显然只要对右端的积分用插值求积公式,求积节点取为即可。

4、推出形如(4.2.1)的多步法,但这里我们仍采用Taylor展开的方法直接确定(4.2.1)的系数.对比(4.1.1)可知,此时,只要确定即可.现在若k=4且,即为4步的Adams显式方法其中为待定参数,若直接用(4.1.4),可知此时自然成立,再令可得解此方程组得 ,.由此得到于是得到四阶Adams显式方法及其余项为(4.2.2)(4.2.3)若,则可得到p=4的Adams隐式公式,则k=3并令,由(4.1.4)可得解得,而,于是得到四阶Adams隐式方法及余项为(4.2.4)(4.2.5)一般情形,k步Adams显式方法是k阶的,k=1即为Euler法,k=2为k=3时,.k步隐式方法是(。

5、k+1)阶公式,k=1为梯形法,k=2为三阶隐式Adams公式k步的Adams方法计算时必须先用其他方法求出前面k个初值才能按给定公式算出后面各点的值,它每步只需计算一个新的f值,计算量少,但改变步长时前面的也要跟着重算,不如单步法简便.例4.1 用四阶显式Adams方法及四阶隐式Adams方法解初值问题,步长h=0.1用到的初始值由精确解计算得到.解 本题直接由公式(4.2.2)及(4.2.4)计算得到.对于显式方法,将直接代入式(4.2.2)得到其中.对于隐式方法,由式(4.2.4)可得到直接求出,而不用迭代,得到计算结果如表所示.表4-1 Adams方法和Adams隐式方法的数值解与精确。

6、解比较4.3 Adams预测-校正方法上述给出的Adams显式方法计算简单,但精度比隐式方法差,而隐式方法由于每步要做迭代,计算不方便.为了避免迭代,通常可将同阶的显式Adams方法与隐式Adams方法结合,组成预测-校正方法.以四阶方法为例,可用显式方法(4.2.2)计算初始近似,这个步骤称为预测(Predictor),以P表示,接着计算f值(Evaluation),,这个步骤用E表示,然后用隐式公式(4.2.4)计算,称为校正(Corrector),以C表示,最后再计算,为下一步计算做准备.整个算法如下:(4.3.1)公式(4.3.1)称为四阶Adams预测-校正方法(PECE). 其ma。

7、tlab程序如下function y = DEYCJZ_adms(f, h,a,b,y0,varvec,type)format long;N = (b-a)/h;y = zeros(N+1,1);x = a:h:b;y(1) = y0;y(2) = y0+h*Funval(f,varvec,x(1) y(1);y(3) = y(2)+h*Funval(f,varvec,x(2) y(2);y(4) = y(3)+h*Funval(f,varvec,x(3) y(3);for i=5:N+1 v1 = Funval(f,varvec,x(i-4) y(i-4);v2 = Funval(f,var。

8、vec,x(i-3) y(i-3);v3 = Funval(f,varvec,x(i-2) y(i-2);v4 = Funval(f,varvec,x(i-1) y(i-1);t = y(i-1) + h*(55*v4 - 59*v3 + 37*v2 - 9*v1)/24;ft = Funval(f,varvec,x(i) t);y(i) = y(i-1)+h*(9*ft+19*v4-5*v3+v2)/24;endformat short;问题1 (4.3.1)中的第四步在程序中那一行实现了?利用(4.2.2)和(4.2.4)的局部截断误差(4.2.3)和(4.2.5)可对预测-校正方法(4.。

9、3.1)进行修改,在(4.3.1)中的步骤P有720问题2 这个约等式是怎么得来的?什么方法?对于步骤C有两式相减可得于是有若用代替上式,并令显然比更好,但注意到的表达式中是未知的,因此改为下面给出修正的预测-校正格式(PMECME).(4.3.2)经过修正后的PMECME格式比原来PECE格式提高一阶. 问题3 试着编出该程序!4.4 Milne方法与 Hamming方法 与Adams显式方法不同的另一类四阶显式方法的计算公式形如(4.4.1)这里为待定常数,此公式也是k=4步方法,即计算时要用到4个值.为了确定,当然可以利用公式(4.2.1)直接算出,但下面我们直接利用Taylor展开式确。

10、定,使它的阶尽量高.方法(4.4.1)的局部截断误差为将它在点展成Taylor级数,得要使公式的阶尽量高,要令前3项系数为0.即解得,代入公式,的系数为0,故(4.4.2)于是得四阶方法(4.4.3)称为Milne公式,它的局部截断误差为(4.4.2).与(4.4.3)配对的隐式方法为k=3的多步法,它的一般形式可表示为要求公式的阶p=4,可直接用(4.2.1),并令,可得(4.4.4)若令,可解出,于是得到下列四阶方法(4.4.5)称为Simpson公式,它的局部截断误差为(4.4.6)用Simpson公式与Milne公式(4.4.3)相匹配,用(4.4.3)做预测,(4.4.5)做校正,由。

11、于(4.4.5)的稳定性较差,因此通常较少使用.为了改善稳定性,可重新选择四阶的隐式公式,Hamming通过试验,发现在(4.4.4)中若令,得到的公式稳定性较好,此时(4.4.4)的解为,于是得四阶多步法(4.4.7)称为Hamming公式,它的局部截断误差为(4.4.8)用Milne公式(4.4.3)与Hamming公式(4.4.7)相匹配,并利用截断误差公式(4.4.2)与(4.4.8)改进计算结果.(4.4.7)该算法称为Hamming预测-校正法。类似Adams预测-校正格式(4.3.2),可得以下的修正的milne-Hamming预测-校正格式:(4.4.9)附 hamming程序。

12、function y = DEYCJZ_hm(f, h,a,b,y0,varvec,type)format long;N = (b-a)/h;y = zeros(N+1,1);x = a:h:b;y(1) = y0;y(2) = y0+h*Funval(f,varvec,x(1) y(1);y(3) = y(2)+h*Funval(f,varvec,x(2) y(2);y(4) = y(3)+h*Funval(f,varvec,x(3) y(3);if type = 1 %hamming预测校正法for i=5:N+1v1 = Funval(f,varvec,x(i-3) y(i-3);v2 。

13、= Funval(f,varvec,x(i-2) y(i-2);v3 = Funval(f,varvec,x(i-1) y(i-1);t = y(i-4) + 4*h*(2*v3 - v2 + 2*v1)/3;ft = Funval(f,varvec,x(i) t);y(i) = (9*y(i-1) -y(i-3) +3*h*(2*v3 + ft-v2)/8;endelse %修正的hamming预测校正法p0 = 0;c = 0; for i = 5:N+1 v1 = Funval(f,varvec,x(i-3) y(i-3);v2 = Funval(f,varvec,x(i-2) y(i-。

14、2);v3 = Funval(f,varvec,x(i-1) y(i-1); p = y(i-4)+4*h*(2*v3 - v2 + 2*v1)/3;M = p - 112*(p0 - c)/121;F = Funval(f , varvec, x(i) ,M);c = (9*y(i-1) -y(i-3) +3*h*(2*v3 + F-v2)/8;y(i) = c + 9*( p - c)/121;p0 = p;endendformat short;例4.2 用四步四阶显式Milne公式及三步四阶隐式Hamming公式解初值问题,步长h=0.1初值仍由精确解给出,要求计算到为止,给出计算结果及。

15、误差,并与例4.1结果比较.解 直接用公式(4.4.3)及(4.4.7)计算.用Milne法计算公式为其中误差用Hamming方法(4.4.7)计算公式为可解得,n=2,3,4误差从所得结果可见Milne方法误差比显式Adams方法误差略小,而Hamming方法与隐式Adams方法误差相当.例4.3 将例4.2的初值问题用修正的Milne-Hamming预测-校正公式计算及,初值,仍用已算出的精确解,即,给出计算结果及误差.解根据修正的Milne-Hamming预测-校正公式(4.4.9)得从结果看,此方法误差比四阶Adams隐式法和四阶Hamming方法小,这与理论分析一致.讲解:线性多步法。

16、(4.1.1)的局部截断误差定义为与单步法相似,可表示为(4.1.2),即只要直接将右端各项在处展成Taylor公式,根据公式阶数为阶,即按的幂整理,令各项系数为0,则可求得相应的线性多步法及其局部截断误差,这里只用到一元函数的Taylor展开.因此不必记系数满足的公式(7.5.4),只要直接展开即可,它不但可以求出Adams显式与隐式公式以及Milne公式,Hamming公式等,还可以求出任何需要的多步法公式,下面再给出两个例题,说明如何直接用Taylor展开的方法.例4.4 解初值问题用显式二步法,其中.试确定参数使方法除数尽可提高.并求局部截断误差.解 本题仍根据截断误差定义,用Tayl。

17、or展开确定参数满足的方程,由于为求参数使就地介数尽量高,可令及得方程组解得此时公式为三阶,而且即为所求局部截断误差.而所得二步法为 例4.5 证明线性多步法存在的一个值,使方法是四阶的.证明只要证明局部截断误差,则方法为四阶.仍用Taylor展开,由于当时,故方法是四阶的.4.5 练习题1. 自编matlab程序得到例4.1中初值问题的四阶Adams显示多步法和四阶隐式多步法的数值结果,列出表4-1,并画出解曲线对比图。2. 应用Adams显示方法、Adams隐式方法和Adams预测校正方法求解下列初值问题的数值解,并分别画出与精确解对比图(附图例如下)。3.用四阶Adams预测-校正方法(PECE)以及修正的Adams预测-校正格式(PMECME)编程实现下列方程的两数值解与精确解的比较。4. 用四步四阶显式Milne公式、三步四阶隐式Hamming公式以及Hamming预测-校正法求解初值问题,步长h=0.1要求列出计算数值解精确解以及误差表格(类似表4-1),并画出解的对比图。

四阶显式Adams法求方程组C语言,第五讲第4章线性多步法(续相关推荐

  1. 矩形法求定积分c语言流程图,矩形法求定积分其程序与程序框图的实现.doc

    矩形法求定积分及其程序与程序框图的实现 ――实例探索定积分思想,切实提高课堂效果 王亮 佛冈县第一中学 数学科 [摘 要]定积分"四部曲"思想,对高中生来说不易接受,教学上用计算机 ...

  2. 用追赶法求方程组c语言程序,数值计算——追赶法求解三对角方程组(附代码)...

    目录 追赶法基础理论 追赶法c++程序代码 程序运行结果 源码文件下载地址 追赶法基础理论 在数值计算中,对三次样条曲线插值和用差分方法求解常微分方程边值问题时,通常会遇到Ax=d三对角形式的方程组: ...

  3. 使用递归法求阶乘(C语言)

    以下程序为C语言,求解阶乘,所用的方法是递归. #include<stdio.h> long factorial(int n); void main(void) {printf(" ...

  4. 扩展欧几里得算法求逆元c语言,关于扩展欧几里得算法和逆元

    关于扩展欧几里得算法和逆元 1.扩欧 a*x1+b*y1=gcd(a,b); b*x2+(a%b)*y2=gcd(b, (a%b))= gcd(a,b); a%b=a-(a/b)*b; 联立可得 x1 ...

  5. 一阶常微分方程的数值解法(二阶显式、隐式 Adams 公式及 Milne 方法)

    一阶常微分方程的数值解法 这里我们介绍二阶显式.隐式 Adams 公式及 Milne 方法求解方程. 题目: 对初值问题 u ′ = u − t 2 , 0 ≤ t ≤ 1 , u ( 0 ) = 0 ...

  6. 四阶龙格库塔法的基本思想_Runge-Kutta法求四元数微分方程

    Runge-Kutta法求四元数微分方程 Runge-Kutta法求四元数微分方程 文章目录一.背景知识1. 坐标系 2. 四元数四元数的矩阵形式 四元数与旋转的关系 二.数学模型1. 四元数微分方程 ...

  7. 隐式欧拉解常微分方程c语言,利用欧拉方法求常微分方程近似数值解.doc

    利用欧拉方法求常微分方程近似数值解,欧拉微分方程,欧拉运动微分方程,欧拉平衡微分方程,欧拉型微分方程,微分方程的欧拉算法,微分方程的欧拉解法,欧拉型常微分方程,偏微分方程数值解,微分方程数值解法 利用 ...

  8. 连续锁定2个不同的锁会死锁_研究死锁–第5部分:使用显式锁定

    连续锁定2个不同的锁会死锁 在我的上一个博客中,我研究了使用Java的传统synchronized关键字和锁排序来修复破碎的,死锁的余额转移示例代码. 但是,有另一种方法称为显式锁定. 在这里,将锁定 ...

  9. 研究死锁–第5部分:使用显式锁定

    在我的上一个博客中,我研究了使用Java的传统synchronized关键字和锁排序来修复破碎的,死锁的余额转移示例代码. 但是,有一种替代方法称为显式锁定. 这里,将锁定机制称为显式而非隐式的想法是 ...

最新文章

  1. signal---高级信号注册函数
  2. matplotlib全图
  3. Kafka Manager 编译 + 部署运行
  4. SAP S/4HANA生产订单抬头字段的维护
  5. html悬浮窗口退出,网页中可关闭的漂浮窗口实现
  6. Python 核实文件是否存在的函数
  7. Android 样式
  8. JavaScript 怎样写注释
  9. 二元函数连续性知识点总结
  10. css 控制自动换行,问题:css 自动换行;结果:CSS控制文本自动换行
  11. postgresql中case when的使用
  12. 《山水情》------中国水墨山水动画的颠峰与极至
  13. MotionLayout,一篇文章带你了解Android最新的动画布局
  14. dotnet夜话 第六、七集笔记
  15. 菲记单词隐藏技能,英语童鞋一定要看
  16. 单点登陆(SSO)协议简介:OpenID、OAuth2、SAML
  17. 【HTML5响应式网页设计T1-T2】
  18. 【附源码】计算机毕业设计SSM社区养老信息管理系统
  19. 云IDE多语言编辑器(Eclipse Theia)
  20. SQL高级教程实用(一)

热门文章

  1. MongoDB 聚合操作之$group使用
  2. 车险赔付率分析报告_车险改革究竟是涨价还是降价了?9月19号后买会便宜吗?...
  3. python argparse模块详解_python学习之argparse模块
  4. 运动会成绩管理java代码_基于jsp的运动会成绩管理-JavaEE实现运动会成绩管理 - java项目源码...
  5. springboot创建项目(通过spring官网)详细
  6. linux date抖动,一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  7. ICH10R服务器主板是什么芯片,Intel ICH10R 芯片组 RAID配置
  8. java jsch 密钥登陆_我们可以使用JSch进行基于SSH密钥的通信吗?
  9. Servlet获取URL地址
  10. android o测试版,一加手机可升级!谷歌已正式推送Android O测试版系统