本节书摘来自华章出版社《数值分析(原书第2版)》一 书中的第0章,第0.5节,作者:(美)Timothy Sauer,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
0.5 微积分回顾
在微积分中有一些重要的事实,对于后面的章节非常重要.中值定理和均值定理对于求解第1章中方程很重要.泰勒定理对于理解第3章中的插值也很重要,对于求解第6章、第7章和第8章中的微分方程也极为重要.
连续函数的图没有不连续的空隙.例如,如果函数对于一个x值是正的,而对于另一个值是负的,该函数必然在某个位置经过0.这个事实是下一章方程求解的基础.第一个定理(如图0.1a所示)推广了这种19观点.
图0.1 微积分中的三个重要定理.在a和b之间存在一点c
定理0.4(中值定理) 令f是区间[a,b]上的一个连续函数,则f可以得到f(a)和f(b)之间的所有值.更准确地说,如果y是f(a)和f(b)之间的数,则存在数字c,a≤c≤b,使得f(c)=y.
例0.7 f(x)=x2-3在区间[1,3]上的取值一定可以取到0和1.
由于f(1)=-2以及f(3)=6,所有在-2和6之间的值,包括0和1,一定可以出现在函数f上.例如,设c=3,注意到f(c)=f(3)=0,并且f(2)=1.
定理0.5(连续极限) 令f是x0附近的一个连续函数,并假设limn→∞xn=x0.则limn→∞f(xn)=f(limn→∞xn)=f(x0) 换句话讲,在一个连续函数中可以获得极限.
定理0.6(均值定理) 令f是区间[a,b]上的连续可微函数,则在a和b之间存在数字c使得f′(c)=(f(b)-f(a))/(b-a).
例0.8 在区间[1,3]上,对f(x)=x2-3使用均值定理.
该定理意味着由于f(1)=-2,同时f(3)=6,在区间(1,3)上必存在数字c满足f′(c)=(6-(-2))/(3-1)=4.非常容易找到这样的c.因为f′(x)=2x,对应的c=2.
下面的定理是均值定理的图0.2 带有余项的泰勒定理.使用实线表示函数f(x),在x0附近使用0阶泰勒多项式(水平虚线),一阶泰勒多项式(斜虚线),以及二阶泰勒多项式(抛物线虚线)逐步得到更好的近似.f(x)和它的近似在x点的差异就是泰勒余项特例.
定理0.7(罗尔定理) 令f是区间[a,b]上的连续可微函数,并假设f(a)=f(b),则在a和b之间存在数字c,使得f′(c)=0.
泰勒近似是我们将学习的许多计算技术的基础.如果函数f在x0点值已知,则函数f在附近点的很多信息也可以知道.如果函数是连续的,则对于x0附近的点x,函数值f(x)可以由f(x0)得到合理的近似.但是,如果f′(x0)>0,则f在右边的近邻点具有更大的值,而在左边的近邻点具有更小的值,x0附近的斜率可由导数近似给出.经过(x0,f(x0))斜率为f′(x0)的直线,如图0.2所示,是一阶泰勒近似.进而更高阶的导数可以得到小的矫正,并得到更高阶的泰勒近似.泰勒使用在x0点的所有导数给出函数在x0点附近所有近似估计.
定理0.8(有余项泰勒定理) 令x和x0是实数,并令f是x和x0之间的k+1阶连续可微函数,则在x和x0之间存在数字c,使得f(x)=f(x0)+f′(x0)(x-x0)+f″(x0)2!(x-x0)2+f(x0)3!(x-x0)3+…
+f(k)(x0)k!(x-x0)k+f(k+1)(c)(k+1)!(x-x0)k+1 结果的多项式部分,x-x0构成的最高k阶项,被称为以x0为中心的函数f的k阶泰勒多项式.最后一项称为泰勒余项.当泰勒余项足够小时,泰勒定理给出了一般的平滑函数的多项式近似.这对于计算机求解问题十分方便,如前所述,多项式的求值计算非常高效. 例0.9 对于中心在x0=0的20
~
21f(x)=sinx找出一个4阶泰勒多项式P4(x).计算使用P4(x)估计sinx时的最大可能的误差,其中x≤0.0001.
很容易得到多项式P4(x)=x-x3/6.注意到这里没有4阶项,由于其对应的系数是0.余项是x5120cosc该余项的绝对值不会大于x5/120.对于x≤0.0001,余项至多是10-20/120并且可能不可见,例如,当x-x3/6在双精度浮点中近似sin0.0001.使用MATLAB来检查对应的计算.
最后,均值定理的积分版本如图0.1c所示.
定理0.9(积分均值定理) 令f是区间[a,b]上的连续函数,令g是一个可积分函数,并且在区间[a,b]中没有改变符号,则在a和b之间存在数字c使得∫baf(x)g(x)dx=f(c)∫bag(x)dx0.5节习题
1.使用中值定理证明存在0(a) f(x)=x3-4x+1(b) f(x)=5cosπx-4(c) f(x)=8x4-8x2+1
2.在区间[0,1]上找到函数f(x)满足均值定理的数字c.
(a) f(x)=ex(b) f(x)=x2(c) f(x)=1/(x+1)
3.在区间[0,1]上找到对于函数f(x)、g(x)满足积分均值定理的数字c.
(a) f(x)=x,g(x)=x(b) f(x)=x2,g(x)=x(c) f(x)=x,g(x)=ex
4.为以下函数找到x=0时的二阶泰勒多项式:
(a) f(x)=ex2(b) f(x)=cos5x(c) f(x)=1/(x+1)
5.为以下函数找到x=0时的5阶泰勒多项式:
(a) f(x)=ex2(b) f(x)=cos2x(c) f(x)=ln(1+x)(d) f(x)=sin2x
6.(a) 在点x=1找到函数f(x)=x-2的4阶泰勒多项式.
(b) 利用(a)的结果近似f(0.9)和f(1.1).
(c) 使用泰勒余项确定泰勒多项式的误差公式.给出(b)部分两个近似的误差上界.(b)部分中的哪一个近似更加接近正确的值?
(d) 使用计算器比较每个问题中实际误差和(c)部分中自己计算的误差上界.
7.对于函数f(x)=lnx完成习题6的(a)~(d).
8.(a) 找出中心在x=0的函数f(x)=cosx的5阶泰勒多项式.
(b) 找到在区间[-π/4,π/4]上使用P(x)近似函数f(x)=cosx的误差上界.
9.当x足够小时,对于1+x的一个常见近似是1+12x.使用函数f(x)=1+x的1阶泰勒多项式的余项确定形如1+x=1+12x±E的公式.计算在近似1.02时对应的E.使用计算器比较实际的误差和估计的误差界E.22
软件与进一步阅读
浮点数计算的IEEE标准在IEEE 754[1985]中发布.Goldberg[1991]和Stallings[2003]论著中讨论了浮点数运算中的大量细节,Overton[2001]的论著中强调了IEEE 754标准.Wilknson[1994]和Knuth[1981]的教科书对硬件和软件的发展都有深远的影响.
有多个特定于一般用途科学计算的软件包,其中大量软件包以浮点算术实现.Netlib是由贝尔实验室、田纳西大学和橡树岭国家实验室维护的一个工具包.程序集中包含高质量Fortran、C和Java程序,但是它的支持较少.程序中的注释足以让用户来操作程序.
数值算法组(NAG)将一个包含1400个用户可调用通用应用数学问题的程序投向市场.其中包含Fortran和C的程序,并且可以从Java程序中调用.NAG包含共享内存和分布内存计算的库.
国际数学与统计库(IMSL)是RogueWave软件的产品,覆盖的领域和NAG库覆盖的领域类似.还包含Fortran、C和Java程序.它还提供PV-WAVE,这是一种功能强大,具有数据分析和可视化能力的编程语言.
包括Mathematica、Maple和MATLAB的计算环境已经发展为包含大量前面描述的计算方法,并具有内嵌的编辑和图形界面.Mathematica和Maple由于独特的符号计算引擎变得引人注目.MATLAB通过“工具箱”服务于许多科学与工程计算应用,工具箱使基础高质量软件得以应用在不同领域.
在这本书中,我们常常会展示基本算法的MATLAB实现.给出的MATLAB代码被用于教学目的.通常牺牲速度和可靠性使得代码结构清晰且具有较好的可读性.不熟悉MATLAB的读者应该从附录B开始;然后就可以很快写出自己的程序实现.23