已阅读5页,还剩150页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
暨南大学信息科学技术学院数学系数学应用数学、信息与计算科学专业本科生课程数值方法讲义仅供修读学生阅读参考,请尊重别人劳动,勿作他用,上课时间:周一1、2节、1-9周周三3、4节,地点:A306,授课教师:张传林,办公地点:南海楼307室,办公电话:38214329,电子邮件:第二讲 数值方法简介一、 数值方法的意义数值方法就是研究运用计算机求解科学问题和实际问题的计算方法及其计算机实验,因此也称数值计算或数值分析,它是现代科学基础的重要组成部分,几乎所有的数值计算都采用浮点算术计算,几乎每台计算机均采用实现IEEE二进制浮点标准 IEEE standard for binary floating-point arithmetic: ANSI/IEEE std 754-1985,1985.Reprinted in SIGPLAN Notices 22(2):9-25,1987./groups/754/,该标准是计算科学家与工业界密切合作的最重要成果之一,然而该标准出版多年后,IEEE标准的关键思想却很少被学生和计算机从业人员了解,也许是没有合适的易于接受的该标准的详细讨论的资料的原因,因此,本课程首先花些时间细致介绍,主要针对数学和计算科学的学生,作为对传统计算方法、数值计算、数值分析、计算机结构的补充内容,当然对其它理工各专业大学生也不无益处。IEEE标准的论题包括Intel微处理器的浮点结构体系、支持该标准的编程语言的讨论和一些关键的概念诸如制约性、稳定性、相约性等的引入。这些内容包含了许多有趣的知识,对计算机和数学有兴趣的所有读者都是完全可以接受的,仅仅需要知道微积分和编程的一些基本知识,可能与传统的讲授方式略有不同。为了认识计算的意义,请读者看看下面的一些名言:Accurate reckoning: the entrance into knowledge of all existing things and all obscure secrets.-AKMOSE, The Rhind Mathematical Papyrus, c. 1650 B.C.I am a HAL Nine Thousand computer Production Number 3. I became operational at the Hal Plant in Urbana, Illinois, on January 12,1997. The quick brown fox jumps over the lazy dog. The rain in Spain is mainly in the plain. Dave-are you still there? Did you know that the square root of 10 is 3.162277660168379? Log 10 to the base e is 0.434294481903252Correction, that is loge to the base 10. The reciprocal of 3 is 0.333333333333333333333333333 2 times 2 is 2 times 2 is approximately 4.1010101010101010101010I seem to be having difficulty-HAL, in 2001: A Space OdysseyNumerical precision is the very soul of science.-SIR DARCY WENTWORTH THOMPSON,On Growth and Form(1942)There will always be a small but steady demand for error-analysts to Expose bad algorithms big errors and ,more important, Supplant bad algorithms with provably good ones.-William M. KAHAN, Interval Arithmetic Options in the Proposed IEEE Floating Point Arithmetic Standard(1980)Since none of the numbers which we take out from logarithmic and Trigonometric tables admit of absolute precision, But are all to a certain extent approximate only, The results of all calculations performedBy the aid of these numbers can only be approximately trueIt may happen, that in special cases the effect of the errors of the tables is so augmented that we may be obliged to reject a method, otherwise the best, and substitute another in its place.-CARL FRIEDRICH GAUSS, Theoria Motus(1809) Backward error analysis is no panacea; It may explain errors but not excuse them.-HEWLETT-PACKARD, HP-15C Advanced Functions Handbook(1982)的确,准确计算是通向知识殿堂的门槛,是通向未知世界奥秘的钥匙。 二、历史回顾数值计算意味着对数进行计算,该学科几乎和人类记数的文明历史一样古老,古人发明了许多处理许多数值计算任务的技术。现在所知,计算记载最早出现在公元前1650年左右的莱茵河数学算草 A.B. Chace, The Rhind Mathematical Papyrus, National Council of Teachers of Mathematics, Reston, VA,1979,Vol.1,pp.48-49. ,其中最精彩的一句名言就是:准确计算是获取有关世上万物的知识和奥秘的途径(Accurate reckoning: the entrance into knowledge of all existing things and all obscure secrets.-AKMOSE, The Rhind Mathematical Papyrus, c. 1650 B.C.)。石子和小棒作为计算工具使用了数千年,起源于古代计数时广泛使用的摆放在木版上的石子,而且后来演化为算盘,欧洲一直使用算盘进行计算,直到13世纪中东的小数点概念引入欧洲,人们很快意识到小数点在计算时的方便性,16世纪时,小数点概念成为全欧洲的标准计算概念。因此,小数点的概念可以说是计算科学发展史上的第一个标志性成果。 计算科学的下一个关键的里程碑是17世纪初由John Napier发明的对数概念和对数表;他的思路就是耗时的乘除法计算、特别是除法计算可以通过对数值的加减法来规避。后来,牛顿在17世纪下叶奠定了现代数值计算的基础,建立了求解许多数学问题的数值技术,有几个数值计算方法至今仍冠以牛顿的名字,牛顿由此走上了发明微积分的辉煌。紧跟牛顿的后继者,诸如18、19世纪的欧拉(Euler),拉格朗日(Lagrange),高斯(Gauss)等伟大的数学家也载入了数学的光辉史册。 运用一个物理装置帮助计算可以说是一个非常古老的想法。算盘就是如此想法的实现形式,John Napier发明了对数后不久,就发明了计算尺,直到19世纪中叶才广泛公用。数按对数尺度,即将数的对数值表示在计算尺上,按一定的移动规则移动游标可以容易地进行乘法和除法运算,精度可以达到3位10进制小数,这种简易的计算工具被许多代工程师使用,直到1975年才被价廉的计算机所淘汰,机械计算机由斯赫卡德(Schickard)、帕斯卡(Pascal)、莱布尼茨(Leibnitz)在17世纪设计,他们的后裔也一直使用到1975年。19世纪查尔斯巴巴基(Charles Babbage)深入发展了不需人的介入仍能运作的可编程机器,但其想法太超前于他所在的时代当时被严重忽视了。在第二次世界大战期间,科学实验室的许多课题组分别由做各类复杂计算的人员组成,如有用纸和笔进行计算者、有用计算尺进行计算者、有用机械计算机进行计算者,在那个时代,“Computer”一词其实就是指一个人,这类计算小组可以视为并行计算的早期阶段。 三、计算机时代 在1939-1941年间由德国工程师科呐德株赦(Konrad Zuse)建造的机器Z3是世界上第一台计算机,Z3 原创于科呐德株赦的想法还包括后面将介绍的有效数字D.E.Knuth. The Art of Computer Programming, Volume 2: Aeminumerical Algorithms, p.227习题3清华大学出版社2002、和NaN的使用、算法编程语言、储存程序的概念等。其传记K.Zuse, The ComputerMy Life,Springer-Verlag,Berlin,New York,1993对他在二战的混乱时期对计算机设计和制造所做的成功努力作了让人吃惊的记载。使用了电气交换装置对2进制数据进行计算。尽管科呐德株赦在二战期间开发了该机器,但他的政府对他的工作并不感兴趣,稍后,作为一个大国家机密,不列颠政府成功开发了强有力的电子编码计算机Colossus。第一台通用目的的可运行的电子计算机 一种更加局限的机器在Iowa稍早一点时候开发成功。通常说成是ENIAC(Electronic Numerical Integrator And Computer), 由宾夕华尼亚大学(University of Pennsylvania) 的哎科特(Eckert)和马戚黎(Mauchly)于1943-1945年间设计制造的由18000个真空管组成的十进制数字计算机,哎科特是电子技术专家,而马戚黎有丰富的计算经验。二战后对英国、美国计算机设计产生巨大影响的是智慧巨人图灵(Alan Turing)和 冯诺依曼(Von Neumann),其中图灵是英国Colossus课题组的主要成员之一,而冯诺依曼是美国普林斯顿大学的匈牙利裔数学家。冯诺依曼提出的特别想法是:计算机的指令存储器和算术运算采用2进制而不用10进制。第一台全功能存储程序式电子计算机于1948-1949年间在英国制造成功,其中的关键领军人物是图灵,此外还有马黎斯韦科斯(Maurice Wilkes), 威尔金逊(James Wilkinson)二位杰出学者,后者是著名的计算科学家并两次得图灵奖,他在图灵在国家物理实验室的工作一文中对有关工作做了详细记载,下面是有关程序、编码和浮点数计算的程序的片段。From 1946-1948 a great deal of quite detailed coding was done. The subroutines for floating-point arithmetic were Produced by Always and myself in 1947They were almost certainly the earliest floating-point subroutines.-J. H. Wilkinson, Turings Work at the National Physical Laboratory(1980)在1949年末至1950年初这段时间,最担心浮点计算内部的舍入误差引起一些计算结果太不精确而不能实际运用,威尔金逊运用广泛的计算试验和对一个计算过程中的舍入误差积累的创造性分析证明一般不会出现太不精确的情况,威尔金逊的分析当然受到了哥登斯坦(Goldstin),冯诺依曼,图灵的影响 J.H.Wilkinson, Rounding Errors in Algebraic Processes, Dover, New York,1994。关于计算机的早期历史的更多细节可参考:M. R. Williams: A History of Computing Technology, Prentice-Hall, Englewood Cliffs, NJ, 1985。计算机发展早期开始的一些计算明星的著名论文都被收入文集:N. Metropolis, J. Howlett, and G.-C. Rota, editors.: A History of Computing in the Twentieth Century, Academic Press, New York,1980,有兴趣者可以查看。 在上世纪50年代期间,计算机的主要应用是在科学应用中的数值计算,而在上世纪60年代计算机大量用于商业的许多领域,但主要不是数值处理,而主要是用计算机处理大量的信息,非数值的信息如字符串在计算机上用一个二进制数表示,当初的商业运用自然不是数值的,到了上世纪的后30年,70年代计算机广泛渗透到中等规模的商业运用,80和90年代个人计算机的革命性进展,计算机在数亿小商业中普遍运用,这些计算机用户的大多数人的原始兴趣不是看到计算机能对数进行计算,他们感兴趣的往往是信息处理,诸如文字、文本、图像、声音的处理,许多用户甚至根本没有意识到图像、声音的处理过程中涉及到大量的数值计算。 四、今天的科学 在科学原理中,数值计算是基本的。物理学家利用计算机求解从宏观宇宙到原子的微观结构的模型方程,检验其理论与实验数据的一致性;化学家和生物学家运用计算机确定蛋白质的分子结构;医学上用计算机进行成像处理、实验数据的统计分析、临床观察等;气象学家运用数值计算处理大量的数据和求解大气方程进行天气预报;电子工程师运用计算机对电路进行数值模拟可以设计更快、更小巧、更可靠的计算机。现代飞机和宇宙飞船及载人航天器与外空探测器的设计已经严重依赖于计算机建模;更具讽刺意味的是1986年1月发生在美国的悲剧:挑战者号爆炸遇难,事故的调查结果显示政治失误多于科学错误,从科学的观点看,宇宙飞船返回大气层比起飞发射脱离大气层的程序要辣手和困难的多,许多神经紧张的科学家兴高采烈、如失重负地看到当宇宙飞船第一次返回大气层和着陆时的计算与实际情况吻合得真如天合。 总而言之,科学和工程的许多领域必须严重依赖于数值计算,传统的两个科学分支是理论科学和实验科学,现在计算科学是常常提到的第三种科学分支,不仅与前两个分支并行发展,而且比前两个分支更放异彩,大量先进可用的计算技术和巨型高速计算机的结合使得一个世纪前认为根本不可能求解的复杂问题现在可以很快计算求解。五、 实数实数可以方便地用在一条直线上的点来表示,直线上的每一点对应到一个实数,如下图:-4 -3 -2 -1 0 1 2 3 4 当然还有许多点没有标出,实直线向两边无限延伸趋向,它们本身不是通常意义下的数,包含在扩展实数系中,整数是0 1 1 2,-2,3,-3,,我们说有可数无限个整数,即虽然我们不能数清所有的整数,但只要我们将数列得足够长每个整数都最终会出现在该序列中;有理数是由两个整数的比形成的数,如;其中一些数如是整数,要说明有理数是可数的,可以将有理数排列为下表:1 2 3 4 12 3 4. . . . . . . . . . . . . .然后用对角线法则排列所有有理数如下:这样每个有理数均排列出来了,然后去掉值重复者,可见有理数可数。无理数就是不是有理数的实数,例如等。数的研究超过了2000年,而关于的定义的研究始于17世纪,每个无理数均可定义为一个有理数列的极限,但是没有办法列出所有无理数,无理数的集合是不可数集合。事实上,如果不然,则上的全体实数可以可数排列如下:取,构造实数则但已知不是上述数列中的任何一个数,矛盾。六、 位置记数系统将10的方幂用于表示数的想法被许多古人用过,譬如中国人、西伯来人、希腊人、罗马人,但今天我们使用的位置记数法却非如此。中国古代的记数系统仅用13个数字:一、二、三、四、五、六、七、八、九、十、百、千、万 只是当时的写法略有不同,参考:梁宗巨数学历史典故,辽宁教育出版社,1995年,有甲骨文的写法。,就可以表示相当大的数,例如:五百万六千六百三十六,特别值得一提的是我们的祖先的记数系统中不仅将数字1,2,3,4,5,6,7,8,9用于表示10的方幂,而且将按此表示的数递归用于更大的数的表示,这使得中国的记数系统可以表示非常大的数,中国的记数系统不仅便于算盘进行计算,稍做改进也可用笔和纸进行计算,现代中国人又加进:亿、兆、吉(G)等,进一步丰富了记数系统。 古罗马人的记数系统与中国人的记数系统类似,对每个10的方幂采用一个不同的符号,如记,可以重复用,外加按5进位的简单累数制规则,从左到右书写,单位按从大到小排列,但如果较小单位写在较大单位之左,要用“减法原则”,就可以用于表明表示多少个10的方幂,例如,=古罗马人的记数系统也便于算盘进行计算,但不便于笔和纸进行计算。熟知的4的缩写符号IV并非为罗马人首创,最早记载是公元前130年左右卢卡尼亚地区(今属意大利)的一块里程碑,现藏罗马博物馆。 不论是中国的记数系统还是罗马人的记数系统要表示非常大的数总是很复杂或根本不可能,今天全世界广泛使用的位置记数系统的一个关键思想就是:0用一个符号表示,即引入表示“无”的符号。据我了解的资料看,最先使用0者是公元前300年左右的巴比伦人。我们今天使用的10进制位置记数系统接近中国的算筹记数系统,但未传入西方,因此洋人一般认为今天使用的10进制位置记数系统是由印度人在公元后600年左右建立的,在其传入欧洲的1200-1600期间之前中东的阿拉伯人已经使用了近6个世纪,因而俗称“阿拉伯数字”。这类记数系统的基数为10和10个符号表示09之间的10个数,每个数字的意义取决于其所在的位置,故称为位置记数系统。为了区别,0是必须的,譬如601和61。选择数字10做基数多数学者认为是基于人拥有10个手指头和10个脚指头的生物学事实。英文单词digit就是从拉丁文的手指演化而来。古人开发的其他位置记数系统还有巴比伦人使用的基数为60的记数法,现在在钟表上仍能看到该记数法的痕迹,以及马雅人在进行天文计算时发明的基数为20的记数法,马雅人是被证实独立于巴比伦人发明位置记数系统并使用了关键性符号0的第一人。10进制的概念最初仅用于表示整数,在17世纪前没有用于表示分数,直到现在在美国的一些机械工具尺寸和股票价格的表述:quarters, eighths, sixteenths等用语中明显可以感觉到使用10进制小数的不情愿迹象。尽管10进制表示对人较方便,但对计算机却不特别方便,2进制或基数2的位置记数系统有用得多,这时每个数表示为一个“比特(0或1)”串,比特是英文bit的音译,而bit是英文binary digit的缩写,英语中bitstring 是a string of bits的缩写,每个比特对应到不同的2的方幂,类似与10进制数中的数据对应到不同的10的方幂一样,计算机的存储设备全都基于2进制表示。此外,比特也用于表示单位,可以视为一种单个物理状态如“开”或“关”,在计算机上存储的比特是按8个一组组织的,8个比特称为一个字节,一个字节可以表示个不同的比特串,可以认为它们代表0255之间的256个整数,类似地我们也可以想象它们代表256个不同的字符,ASCII编码格式定义了这些比特串中前128个的字符解释标准,Unicode定义了个2-字节字符,差不多可以对世界上所有书写文字进行编码。一个单词是计算机储存的4个连接字节,含32个比特;一个双词是计算机储存的8个连接字节,含64个比特。一个千(kilo)字节是个比特;一个兆(mega)字节是1024个千比特,即个比特;一个G(吉)字节是1024个兆比特,即个比特;一个Tera(太拉,垓(音))字节是1024个Giga(吉)比特,即个比特;一个Peta (匹塔)字节是1024个太拉比特,即个比特;现在已经有Peta (匹塔)字节的存储器了,而对此在一个世纪前是几乎不可想象的。希腊语前缀kilo,mega,giga,tera,peta分别代表,而在计算机上相应2的方幂重要的多。虽然2进制在计算机时代之前用得不多,但将一个数表示为2的方幂的和的想法并不新鲜,它是几千年前The Rhind Mathematical Papyrus(c. 1650 B.C.)上描述乘法算法的基础。 每个实数均有一个10进制表示和2进制表示及任何大于1的基数的表示。有时我们不用表示的说法而用展开的说法,整数的表示是直接的,需要展开为基数的非负方幂的和,例如 非整数的实数小数点右边还有数字,这时的展式可以有限项或无限项,例如两种展式均有限;然而,象的10进制展式显然仅含有限项,但其2进制表示为无限项,具有不有限终结的下述形式:注意虽然此表示不终结,但为无限循环的,而的10进制展式和2进制表示均不有限终结:有理数总有有限或无限循环展式,例如 事实上,任何有限展式均能写成无限循环展式,例如不过,这时我们一般使用有限展式。 无理数始终具有无限展式而且是无限不循环形式,例如的前10位数字看上去像循环的,但其实不然。练习:从2进制数向10进制数转换几乎是直接的,而从10进制向2进制数转换却并非显然。试设计或复习后并介绍从10进制向2进制数转换的系统方法。是从左向右确定比特数字方便还是从右向左确定比特数字方便?两种方式都可接受,但一旦你熟悉了其一你会认为你熟悉的方式比不熟悉的方式方便。自己选择一些例子测试一下你的方法。你的方法能推广到将10进制小数转化为2进制小数吗? 在同2进制数打交道时,许多人喜欢用8进制记数法,用数字07缩写比特串000111,也可以用16进制记数法,用数字09及字母AF缩写比特串00001111。七、误差的自然起源纯粹数学家关注的是问题的准确解,而由于我们生活于一个有限的宇宙,没有办法测量出有关物理数据的准确值,而且即使有时能测量得到精确值,但其实际用处也并不大,例如,众所周知的无理数圆周率有无限位毫无规律的数字,世界上没有能够储存该数的各位数字信息的计算机。又如,假设为了估计密云水库的藏水量,甲公司先用一个大水泵抽出水库中的大部分水,然后采用更精确的设备很准确地测量出剩下的少量水的数量,这样得知密云水库的藏水量为吨,而乙公司以10倍于甲公司的成本租用相当精确的仪器测量出密云水库的藏水量为吨,那么甲公司的测量是否就错了呢?也许并没错,由于蒸发或渗漏等原因,该问题根本就没有准确答案,那么是否值得花更大代价获得更准确的估计呢?也未必需要,事实上一个大致的估量就能满足多数实际需要了。再如,假设波音公司在设计制造一种新型飞机时需要一些机翼铆钉,工程师确认铆钉直径应该为毫米,而且误差不能超过毫米,现在波音公司有能生产直径为毫米误差不超过毫米的机翼铆钉的设备,但公司可以购买能生产直径为毫米误差不超过毫米的机翼铆钉的昂贵设备,波音公司值得购买该铆钉生产设备吗?航空工程师已经确认机翼铆钉直径的精度的如此改进并不明显改善机翼和飞机的安全性和可靠性,然而,当精度超过了容许限度,机翼就不稳定和有安全风险,于是波音公司是否值得购买该铆钉生产设备就显然了。从这些例子可以看出,绝大多数应用科学家和工程师并不关心问题的精确解。在纯粹数学上,知道许多问题和方程(包括代数方程、常微分方程和偏微分方程)有准确解存在,但要求出却非常耗时和困难,甚至根本不可能准确求解。但就许多实际需要来讲,如果能保证误差不会太大,给出问题解的一个估计就已足够。由此就提出了数值分析的基本问题:我们关心一个问题或方程的一个准确解,而希望找到一个近似解使其与准确解的实际误差(也称绝对误差)不超过给定的最大许可限,即。该误差限的特殊取值大小取决于具体的实际问题,该近似问题的主要困难是要知道准确解极端难,即使知道了一个近似解,也没办法知道实际误差。但无论如何,我们也必须保证实际误差不超过。更有用的是相对误差,它是绝对误差与准确值的比率的绝对值,即:相对误差 例如,前面密云水库储水量的测量问题,如果我们以公司乙用精密仪器测定的量为准确值,即藏水量为吨,则甲公司测得的近似藏水量吨的绝对误差为:(吨)而相对误差为:前面波音公司机翼铆钉直径的最大容许误差,对应的最大容许相对误差为:波音公司现有机器生产的铆钉的最大相对误差为:正在考虑是否购买的机器生产的铆钉的最大相对误差为:再如,用作为的近似值,则实际误差为 0.0400,相对误差为4.0000e-006。前面是从测量的角度描述误差,我们也可以从纯计算的角度来体会误差,老师在教小学生学算术时,一般告知遇到除不尽的情形时,根据保留小数点位数的规定采取四舍五入的方法取近似值,这时得到的近似值中从左向右出现的第一个非0数字开始计算,所有的数字均称为该近似值的有效数字,一个近似值的有效数字的总个数称为该近似值的有效数字的位数,例如,作为的近似值有8位有效数字。仔细推算一下知道,按四舍五入的方法得到的近似值的误差不超过该近似值的最右边一位数字的单位的一半,譬如作为的近似值的绝对误差是,小于的最右边一位数字1的单位的一半,实际上可以证明:一个近似值从左向右出现的第一个非0数字右边的数字为有效数字的充要条件就是其绝对误差不超过该位数字的单位的一半。进而,一个近似值从左向右出现的第一个非0数字到任意一个有效数字之间的数字均是有效数字。鉴于此,在计算实践中,人们也习惯用有效数字的多少来描述一个近似值的近似程度。只用加、减、乘、除四种算术运算计算数学函数值的话,许多数学函数在一点的值都很难计算,例如就不易求。在所有数学函数中,多项式函数值能用加、减、乘、除运算直接计算,即一个变量的下述形式函数:其中是实数,当 时,称为次多项式。复杂函数可以考虑先用多项式近似,然后计算多项式值的方式得到复杂函数的值。如何构造一个复杂函数的近似多项式呢?泰勒多项式就是一种方法。八、泰勒多项式一个数学函数在一点附近的次泰勒多项式是指在处与具有相同的函数值及至阶导数值的次数不超过的多项式,即。导数很好地度量了函数的变化率,因此泰勒多项式在一定意义下反映了函数在一点附近的性态,例如,0次和1次泰勒多项式可以导出如下:0次多项式为常数,从而。1次多项式可设为:,由泰勒多项式满足的条件得:解此方程组得:所以可见1次泰勒多项式为在处的切线方程,如下图:图1.2.1一般地,设分别是在一点附近的次泰勒多项式,则在的函数值和1至阶导数均为0,即是次数不超过的多项式的至少重根,于是可设:再由解得:,于是泰勒多项式的递推公式如下:进而,。例如,在的泰勒多项式为:特别,下面我们分别用为的逼近来计算的值,这时会涉及到的计算,当然可以设计新函数:jiechen(n),不过也可以调用MATLAB的两个现成函数:factorial(n),gamma(n+1),其对应的值也是。我们编写m文件yuxianjinxibijiao.m如下:x=input(输入给定点);format longp1=1;p2=1-x2/2;p8=p2+x4/factorial(4)-x6/gamma(7)+x8/gamma(9);p=cos(x);q=abs(p);e1=abs(p1-p);e2=abs(p2-p);e8=abs(p8-p);re1=e1/q;re2=e2/q;re8=e8/q;disp(用泰勒多项式计算余弦值误差比较)disp( n 误差 相对误差 )e=e1 e2 e8;re=re1 re2 re8;k=1;for n=1 2 8 disp(sprintf(%2.0f %1.19e %1.19e,n,e(k),re(k) k=k+1;end运行后,命令窗给出提示信息:输入给定点。然后输入27*pi/180,按回车,则输出下面的结果:用泰勒多项式计算余弦值误差比较:n 误差 相对误差 1 2.2285403854302910000e-001 2.8675956589316731000e-0012 8.8075092047628090000e-003 1.1333146720920667000e-0028 5.8631840493816867000e-009 7.5445081621341211000e-009 下面是取-2,2上这些逼近多项式画函数图的程序:%余弦求值的几个泰勒多项式近似方法的比较图x=linspace(-2,2,1000);y=cos(x);p1=ones(1,1000);p2=1-x.2/2;p8=p2+x.4/factorial(4)-x.6/gamma(7)+x.8/gamma(9);plot(x,y,m,x,p1,k,x,p2,r.,x,p8,g)text(-2+4*10/999,cos(-2+4*10/999),y=cos(x)text(-2+4*100/999,1,y=itp_1(x)a=-2+4*200/999;text(-2+4*200/999,1-a2/2,y=itp_2(x)a=-2+4*300/999;text(a,1-a2/2+a4/gamma(5)-a6/gamma(7)+a8/gamma(9),y=itp_8(x)其运行结果图如下:图1.2.2而当自变量取值太大时,泰勒多项式近似误差可能很大,例如,取-10,10上用计算的绝对误差图可用下面的程序画出:%余弦求值的8次泰勒多项式近似方法的误差图x=linspace(-10,10,1000);y=cos(x);p8=p2+x.4/factorial(4)-x.6/gamma(7)+x.8/gamma(9);r=p8-y;for k=1:1000 r(k)=abs(r(k);endplot(x,r,r)运行结果图如下:图1.2.3可见在时,误差相当大。 再如,熟知的指数函数的泰勒多项式是:,而且数学上容易证明:对所有的实数,该多项式序列收敛于指数函数,自然可以用该多项式序列作为计算指数函数值的方法,下面的程序给出对的不同取值和项数的不同选取对应的相对误差图:% 指数函数的各阶泰勒逼近的相对误差图nTerms=50;a=1;for x= 100 20 10 1 -1 -10 -20 -100 term=1;s=1;f=exp(x)*ones(nTerms,1);for k=1:50,term=x.*term/k;s=s+term;err(k)=abs(f(k)-s);endrelerr=err/exp(x);subplot(2,4,a) semilogy(1:nTerms,relerr) ylabel(log(err) xlabel(n) title(sprintf(x=%5.2f,x) a=a+1;end运行结果图如下:图1.2.4纵轴为对应相对误差的以10为底的对数值,可见用其泰勒展式的部分和逼近指数函数并没有理论上那样好的实际效果,当时,其相对误差随项数的增加不但不降反而有增长的趋势,量值也相当大,达到了以上,显然这样的近似值是不能采用的。仔细推敲就会发现,这是由于部分和中相邻两项相差较大,而机器运算是逐项进行,出现了“大数吃小数”的现象。其实,就负数情形,只要运用公式:及,异常情况就可能大大改观,下面是用此方法计算的相应相对误差图程序:% 指数函数在负半轴上函数值用正半轴上各阶泰勒逼近的倒数计算的相对误差图nTerms=50;a=1;for x=-10 -20 -100 -110 -120 -140 -200 -380 term=1;s=1;f=exp(x)*ones(nTerms,1);for k=1:50term=(-x).*term/k;s=s+term;err(k)=abs(f(k)-(1/s);endrelerr=err/exp(x); subplot(2,4,a);semilogy(1:nTerms,relerr)title(sprintf(x=%5.2f,x);a=a+1;end其运行结果图如下:图1.2.5从图形知道,这时已取的所有负数,指数函数对应近似值的相对误差均随选取的泰勒逼近多项式的次数增加而减少,这同数学理论上的结论一致。由此可以看出,等价的数学公式在计算实践中的实际效果可能千差万别,在进行实际计算时务必对此高度重视,请看下面的例子。 按二项式定理展开可得下述数学上的恒等式:下面是用右边多项式进行函数赋值得到函数在1附近的图形的程序:%对(x-1)7 用 x7-7x6+21x5-35x4+35x3-21x2+7x-1在x=1附近赋值并作图k=0;n=100;for delta=0.5 0.4 0.3 0.2 0.1 0.01 0.008 0.007 0.005 0.003 0.002 0.001 x=linspace(1-delta,1+delta,n); y=x.7-7*x.6+21*x.5-35*x.4+35*x.3-21*x.2+7*x-ones(1,n); k=k+1; subplot(3,4,k) plot(x,y,x,zeros(1,n); axis(1-delta 1+delta -max(abs(y) max(abs(y)end运行结果图如下:图1.2.6从图形可以感觉到越邻近1附近函数值波动越厉害,似乎该函数与横轴有许多交点,显然与理论上只有6个交点不统一。这也充分显示出理论与实际和实践的巨大差别。九、泰勒定理 泰勒(Brook Taylor,1685-1731)生于英格兰米德尔塞克斯郡,其父母为当时社会名流,他的父亲曾对他在音乐和油画方面进行了严格的培养,他在进大学前一直接受家庭教师的教育,18岁时进入剑桥大学St.John学院,在大学毕业前一年完成了一篇重要的数学论文,该论文直到1714年才发表, 基于他在数学方面的潜质和感悟力而不是看他发表的文章,于1712年选进英国皇家学会,并于两年后被授予皇家学会秘书长头衔,而且被委托参加处理牛顿和莱布尼兹微积分奠基人争议问题专家组工作。在1712-1724年间,他发表了13篇重要的数学论文,此外,还对引力现象、对数和毛细管功能等做了重要研究工作。泰勒经历了几个悲壮的个人事件,其一就是,他父亲称他的女朋友不够善良而反对他的第一次婚姻,而且从结婚开始他父亲就与他断绝了来往,直到1723年他的第一任妻子在生产时为了让孩子活命(不幸的是这个孩子不久也夭折)而身亡时他父亲才与他恢复来往,1725年他完成了他的第二次婚姻,但这次收到了他父亲的祝福,可不幸的是1726年其第二个妻子在生孩子时也去世了,不过该孩子存活了下来。 从前面的问题和例子中我们会发现一个在某点可微的函数在该点的泰勒多项式是其一个很好的近似工具,而且一般而言随次数的增加近似效果也更好,当然次数高对应多项式赋值的计算量也较大,而且即使多项式赋值涉及的计算均是准确计算,泰勒多项式的值与函数值也有误差:,一般称为截断误差或阶余项,为绝对截断误差。下面的泰勒定理给出了截断误差的一个估计。 泰勒定理 假设对给定自然数,函数在区间上具有从1至阶导数而且阶导数连续,则存在满足下述余项公式:。 该定理的证明容易在微积分的教材中找到,故此从略。泰勒定理对于计算的指导意义在于:对于给定的截断误差限和导函数在区间上的上界,即希望,则可以从不等式:确定需要选择的泰勒多项式的阶数。 例如,如果我们选择利用在点的泰勒多项式计算的值,希望截断误差不小于,则由在上,和,可以利用下面的尝试程序确定满足该不等式的最小:e=input(输入截断误差上限:);x=input(输入赋值点:);format longn=1;f=x;while f=e n=n+1; f=f*(x/n);enddisp(sprintf(则所要泰勒多项式的次数为:%19d,n)程序运行后,输入截断误差上限0.00000001,输入赋值点0.9,所要泰勒多项式的次数为:11。 下面程序给出对选定的次数和点用相应泰勒多项式计算指数函数值的实际误差:x=input(输入赋值点:);n=input(输入所选泰勒多项式的次数:);format longf=x;s=1;for k=1:n s=s+f; f=f*(x/(k+1);endz=exp(x);e=abs(z-s);disp(sprintf(则用%19d次泰勒多项式计算exp(%1.6f)的近似值为:%1.19e,相应误差为:%1.19e,n,x,s,e)运行后,输入赋值点:0.9和所选泰勒多项式的次数:11,则用 11次泰勒多项式计算exp(0.900000)的近似值为:2.4596031105237177000e+000相应误差为:6.3323213339572249000e-010小于希望的上限0.00000001。十、泰勒级数和马克劳林级数马克劳林(1698-1746)生于苏格兰Ruel河畔的一个村庄,他的父亲是村庄的头目,在他出身后6周时就去世了,他母亲为了让马克劳林和他弟弟接受更好的教育,就迁到有著名学校所在地Dumbarton,马克劳林的母亲在他9岁时去世,以后马克劳林和他弟弟就由他叔叔照养,马克劳林11岁时就上Glasgow大学开始大学学习生涯(当时各大学竟相招收早慧儿童读大学),他14岁时就以推广了牛顿重力理论的感人论文通过答辩大学毕业,之后带着成为一个校长的意图进入神学学校,但不久就结束了神校职业经历,在1717年,当时仅19岁时就成为Aberdeen大学的数学讲座教授。两年后,他就见到了杰出的牛顿,很快他们就成了好朋友,同年牛顿就授予马克劳林英国学者最高荣誉皇家科学会院士,接着在1725年被授予爱丁堡大学的著名职位,在爱丁保度过了他的职业余生。马克劳林写了几本重要的著作,其中之一是与著名数学家欧拉和伯茹利合著的关于潮水理论的书,该书于1740年出版,赢得了法国科学院的三个学术大奖。马克劳林也是一个杰出的教育家。他1733年结婚,有7个孩子。他还是一个著名的慈善家,有很多朋友,包括皇家成员。他负责爱丁堡皇家学会工作,将其从一个纯粹的医学学会转变为包含各学科的科学学会,1745年由于二世党人军入侵,马克劳林为了保卫爱丁堡参加了大量体力劳动,繁重的体力劳动加上从马背上甩下来受伤使其身体非常虚弱,于1776年去世。如果函数在点的各阶导数均存在,则可以得到函数在点的泰勒级数如下:泰勒级数的前项和就是次泰勒多项式,泰勒级数可能收敛,也可能发散。当时,对应的泰勒级数称为马克劳林级数。 几个常用的马克劳林级数如下:利用已知的泰勒级数和马克劳林级数,通过级数的加、减、乘、除及微分和积分运算,可以求得其它一些函数的泰勒级数和马克劳林级数。例如十一、 数的计算机表示在计算机上以何种方式表示数呢?我们先从整数谈起。1、整数的计算机表示典型的做法是运用32-比特位置储存整数,现在就此情形细致地展开讨论。如果我们仅关心非负整数,则其表示相当容易,譬如用一个比特串专门代表整数,例如,整数71可以储存为:00000000000000000000000001000111用这种方式(32比特串)能表示中的所有整数,在1之后有32个0,太大,不能表示。 事实上我们不仅需要能表示正整数,而且需要能表示负整数和0,最自然的想法就是符号-绝对值模式:用32个比特中的一个储存符号,用余下的31个比特储存整数的绝对值(可以遍历的全体整数)。然而,几乎所有的机器都用一种更明智的储存方式称为2进制补码储存体系:一个非负整数储存为的2-进制表示,而对每个负整数,储存为正整数的2-进制表示,例如储存为:正确性可以用和的2进制补码表示
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司股权转让协议 小微企业平价转让完整版
- 重庆某医用卫生护理用品项目可行性研究报告
- 兽药企业运营管理方案
- 施工现场临时用电电气工程规范
- 建筑地基桩基础验收报告
- 小学英语四年级下册Unit 1 Ill draw the pictures.项目式学习教学设计
- 中职机电专业二年级带式输送机安全操作教案
- 小学三年级数学上册:解决问题策略的建构与应用教学设计
- 初中九年级历史《一战后的国际秩序:凡尔赛华盛顿体系》教案
- 初中七年级科学“物质鉴别密钥”跨学科项目化教学设计
- 工业互联网基础知识
- 2026年中医药法知识竞赛试题及答案
- JJF 2309-2025 重点排放单位碳计量审查规范
- 消防设施工程公司绩效管理办法
- 急性心梗合并急性心衰护理
- 合规经营与知识产权保护承诺书4篇
- 高血压危险分层、治疗与特殊类型管理
- 物业工程维修培训课件
- 阳光512灯控台说明书
- 中国金融学 课件(西财版)第0-2章-绪论、金融概述、货币与信用
- 安泰安全培训公众号下载课件
评论
0/150
提交评论