本书将系统地应用基本的数学概念.doc

上传人:枫** 文档编号:556117424 上传时间:2022-09-27 格式:DOC 页数:12 大小:1.09MB
返回 下载 相关 举报
本书将系统地应用基本的数学概念.doc_第1页
第1页 / 共12页
本书将系统地应用基本的数学概念.doc_第2页
第2页 / 共12页
本书将系统地应用基本的数学概念.doc_第3页
第3页 / 共12页
本书将系统地应用基本的数学概念.doc_第4页
第4页 / 共12页
本书将系统地应用基本的数学概念.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《本书将系统地应用基本的数学概念.doc》由会员分享,可在线阅读,更多相关《本书将系统地应用基本的数学概念.doc(12页珍藏版)》请在金锄头文库上搜索。

1、11第1章 绪论第1章 绪 论本书将系统地应用基本的数学概念,这些概念读者应该已经知道,但可能不会立即回想起它们。因此本章将主要帮助读者回顾这些概念,并介绍属于数值分析领域的新概念。同时将使用MATLAB(MATrix LABoratory)工具来帮助阐述这些概念的含义和作用,MATLAB提供了用于科学计算的可编程、可视化的集成环境。1.6节对MATLAB进行简要的介绍,这些介绍足以使读者读懂书中的后续内容,但我们还是向有兴趣的读者推荐手册HH00,该手册对MATLAB语言进行了完整的描述和说明。本章将扼要地介绍微积分学、线性代数学和几何学中的基本概念,不过将采用一种更有利于把它们应用到科学计

2、算之中的方式来介绍它们。1.1 实数许多人都知道实数集R,但也许很少人能知道计算机处理实数的方式。一方面,计算机的资源是有限的,因此它只能表示出实数集R的有限维的子集F。子集F中的数被称为浮点数。另一方面,正如将要在1.1.2小节中所讲的,用于描述F的性质与用于描述实数集R的性质是不同的。原因是任意实数x原则上都被机器截取了一定位数,这就产生了一个新的数值(称为浮点数),记为fl(x),而这个浮点数并不一定要与原来的数x保持完全一致。1.1.1 实数的表示为了更好地理解集合R和F之间的区别,我们通过几个MATLAB实例来说明计算机(例如一台PC机)处理实数的方式。至于是采用MATLAB语言,还

3、是采用其他的语言,完全根据使用的方便程度来决定。实际上计算结果主要取决于计算机的工作方式,而很少取决于所采用的编程语言。考虑有理数x=1/7, 它表示成小数为0.。由于它的小数位数是无限的,因此它的十进制表示也是无限的。为了得到它的计算机表示,在提示符后输入分数1/7,得到:1/7ans=0.1429得到的结果是一个小数点后只有四位的数,而且它的最后一位与初始数字的对应位不同。如果把输入换成1/3,我们将会得到0.3333,此时第四位小数仍然与初始数值的对应位保持一致。这是由于实数在计算机内是四舍五入的。这意味着:首先,只能返回一个固定位数的十进制数;其次,对于最后一位数字来说,如果与其相邻的

4、下一位数字大于或等于5,那么最后一位数字便加1。需要注意的一点是,只使用一个4位十进制数去表示一个实数是存在问题的。实际上,数字在内部是用16位十进制数来表示的,我们所作看到的结果也只是MATLAB多种输出格式中的一种。同样的一个数值,根据其所做的特定格式的说明的不同,便可以得到它的不同表示方式。例如,对于数1/7来说,有下列一些可能的输出格式:format long format short eformat long e format short g format long g 输出输出输出输出输出0.142857142857141.4286e011.428571428571428e010.

5、142860.142857142857143可以看出一些表示方式比其他几种方式更加接近计算机的内部表示。实际上,计算机通常采用下列方式来存储一个实数: x=(1)s(0.a1a2at)e=(1)sme-t,a10(1.1)其中s只能取0或1,(大于或等于2的整数)是计算机采用的底数,整数m称为尾数,尾数的长度t是所存储数据ai的最大位数,范围介于0和1之间,整数e称为指数。长型e数据采用的表示方法就非常类似于这种形式,其中e代表指数,表示指数大小的数位前面加有正负运算符号,写于字符e的右侧。式(1.1)中所给数值的小数点位置是不固定的,称之为浮点数。数位a1a2ap(其中pt)称为数x的有效数

6、位。a10这一条件保证了同一个数值不会出现多种表示形式。例如,如果没有这一限制条件,数1/10既可以表示为(以10为底)0.1100,也可以表示成0.01101等其他形式。因此,集合F可以由底数,有效位数t的大小和指数e的变化范围(L,U)(其中L0)完全描述确定。此时集合可表示为F(,t,L,U)。例如,在MATLAB中集合F可以表示为F(2,53,1021,1024)(实际上,以2为底的含有53个有效数位的数值与MATLAB用长型所显示出来的以10为底的含有15个有效数位的数值是一致的)。当用集合F中的数fl(x)来代替一个不等于0的实数x时,不可避免地会造成舍入误差。由于满足下式:(1.

7、2)所以舍入误差一般都比较小,公式中代表距1最近的浮点数与1之间的差值。注意是和t的函数。在MATLAB中,可以通过eps命令来得到,结果为2-522.2210-16。需要指出,在式(1.2)中描述的是x的相对误差,它比绝对误差|xfl(x)|有着更实际的意义。实际上,后者未考虑x量值本身的作用,而前者考虑了这个问题。0不属于集合F,因为如果0属于集合F,则在式(1.1)中a10,此时必须对它进行单独处理。此外,由于L和U都是有限数,所以那些绝对值极大或极小的数值都不能表示出来。如果精确地描述,F集合中最小的和最大的正实数分别表示为:在MATLAB中,可以利用realmin和realmax函数

8、来分别得到它们,结果如下:遇到比xmin还小的正数时会输出下溢信息,同时把这个数按0处理或采用特定方式处理(可参照QSS00第二章)。对于那些比xmax还大的数,会给出上溢信息,并把它存储在变量Inf中(计算机用Inf变量来表示无穷大+)。集合F中的元素在xmin处更为密集,在接近xmax处密集度减小。实际上,集合F中与xmax距离最近的数(在xmax的左侧)和与xmin最近的数(在其右侧)分别是:可见x+minxmin10-323,而xmaxxmax10292(!)。 但从式(1.2)可以看出这两种情况下的相对距离都是很小的。1.1.2 浮点数的运算由于F集合只是集合R的一个特定的子集,所以

9、在集合R的运算中适用的方法并不完全适用于浮点数的代数运算。具体来讲,交换律对于加法运算(fl(x+y)=fl(y+x)与乘法运算(fl(xy)=fl(yx)仍然适用,但是其他规则如结合律和分配律已不再适用了。而且0也不再是惟一的。实际上,当把变量a 赋值为1并执行下面的表达式时:a=1;b=1;while a+b=a;b=b/2;end可见,循环每执行一次,只要此时a与b相加之和不等于a,变量b便会被除以2。如果按通常的方式对一个实数进行这种操作,这个程序将永远不会停止,而在本例中,程序在运行一定次数以后便会结束,并返回b的值:1.1102e16=/2。因此我们至少可以看到:虽然b此时并不等于

10、0,但却有a+b=a成立。这种情况之所以能够发生,原因就在于集合F是由相互独立的数值所构成的;当把两个数a和b相加时,其中bx=1.e15; (1+x)1)/xans=1.1102可见结果很不准确,相对误差竟大于11%!再看另一个数值相消的例子,计算下列函数:f(x)=x77x6+21x535x435x321x27x1(1.3)在横轴上区间1210-8,1+210-8内均匀分布的401个点上,得到的是如图1.1所示的杂乱曲线(实际上该运算就是(x1)7,它是连续的,在x=1这样小的邻域内等于零函数)。在1.4节,会给出描绘曲线所用的命令。图1.1 由消去误差导致的函数(1.3)的波动曲线最后需

11、要注意的一个比较有趣的问题是:在集合F中并没有包括那些含义不明确的表达形式,如0/0或/,遇到这类表达形式,将会给出提示信息NaN(not a number,在MATLAB中用NaN来表示),对此声明通常的数值计算规则对它们并不适用。注1.1 尽管舍入误差通常都很小,但如果它们在长型和复数型的运算规则中不断累加时,也可能导致灾难性的后果。有两个真实的事例足以说明问题,一个是发生于1996年6月4日的阿里娅娜火箭的爆炸事故,这次事故就是由于控制台上计算机的溢出导致的;另一个是1991年海湾战争期间,曾有一枚美国的爱国者导弹落入了美军军营,这也是由于计算导弹飞行轨道时产生的舍入误差引起的。另一个例

12、子倒没有多少灾难性(但同样会引起不少麻烦),它就是下面的序列:(1.4)当n趋于无穷时,序列将收敛于。当利用MATLAB来计算zn时,和zn之间的相对误差在前16次迭代运算中是逐渐减少的,但当迭代运算继续时,由于舍入误差的影响,相对误差会逐渐增加(见图1.2)。图1.2 相对误差|zn|/与n的对数曲线参见习题1.11.2。1.2 复数复数集用C来表示,复数的形式为z=x+iy,其中i=是虚数单位(此时有i2=1),而x=Re(z)和y=Im(z)分别是z的实部和虚部。复数在计算机上通常采用实数对的形式来表示。在MATLAB中,变量i和j如果没有经过重新定义,则它们代表虚数单位。要引入一个实部

13、为x,虚部为y的复数,只需写成x+i*y;也可以采用另一种方式,使用命令complex(x,y)来实现。再来看一下复数z的三角表示法(或称极坐标表示法):(1.5)其中=是复数的绝对值(可通过abs(z)命令来得到),为相角,它是在复平面(x,y)上向量z与x轴之间的夹角。可以通过键入angle(z)命令来得到。于是式(1.5)可以表示为:abs(z)*(cos(angle(z)+i *sin(angle(z) 通过compass(z)命令可以得到一个或多个复数的极坐标形式,其中z既可以是单一的复数,也可以是一个复向量,该向量的元素为复数。例如键入下列语句:z=3+i*3;compass(z)

14、;可以得到如图1.3所示的图表。图1.3 MATLAB的compass命令的输出对于任意给定的复数z,可以利用real(z)命令来求得实部,利用imag(z)命令求得虚部,并可以利用conj(z)函数来方便地得到z的复共轭=xiy。在MATLAB进行所有的运算之前都暗含着一个假设:所有操作数和结果一律按复数对待,因此有时会有一些令人意外的现象出现。例如,如果利用MATLAB命令(5)(1/3)来求5的立方根,此时得到的结果并不是1.7099,而是复数0.8500+1.4809i(设符号代表幂指数运算)。实际上,所有以(其中k为整数)这一形式表示的数与z是难以区分的。计算可以得到,也就是下列三种不同形式:ATLAB将从其中选择一个作为输出,选择的方法是在复平面上从实轴开始逆时针旋转扫描,最先遇到的那个值便作为结果输出。由于z=5的极坐标表示形式是,其中=5,=,则三个根分别为(图1.4表示出了三个根在Gauss平面上的分布):z1=(cos(/3)+isin(/3)0.85501.4809iz2=(cos(/3)+isin(/3)0.8550+1.4809iz3=(cos()+isin()1.71可见MATLAB选择了第二个根作为输出

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号