第1章绪论
1.1数值分析研究的对象和内容
数值分析(numerical analysis)为数学的一个分支,是研究分析使用计算机求解数学计算问题的数值计算方法及其理论的学科。它以计算机求解数学问题的理论和方法为研究对象,是计算数学的主体部分。
数值分析的目的是设计及分析一些计算的方式,可针对一些问题得到近似但足够精确的结果。数值分析主要研究使用计算机求解数学问题的方法、理论分析及其软件的实现,是科学工程计算的重要理论支撑。它既有纯粹数学的高度抽象性和严密科学性,又有具体应用的广泛性和实际实验的技术性。数值分析主要应用于科学与工程计算,它研究各种科学与工程计算中求解数学问题的数值计算方法的设计、分析,有关的数学理论及其具体实现等问题,所以数值分析这门学科现在也常被称为科学与工程计算。
对于很多数学问题,人们往往难以简明、准确地表示出其解,如,尽管被积函数较简单,但它的原函数难以用初等函数表示成有限形式,因此无法使用牛顿-莱布尼茨公式计算积分值。另外,有些被积函数的原函数过于复杂,计算不方便,甚至即使有准确的计算方法也常常难以得到结果。例如,用克拉默法则求解一个n阶线性方程组,需要计算n+1个n阶行列式的值,总共需要计算次乘法。当n值很大时,计算量是相当惊人的,如用克拉默法则求解20阶线性方程组,其乘除法运算大约需要执行次。由于计算量太大,用克拉默法则求解高阶线性方程组是不现实的,因此,需要能够用于实际求解的计算方法。在我国古代就有对计算圆周率和用消去法解线性方程组等数值分析方法的研究。微积分出现以后,就有了数值微积分和解常微分方程等各种数值分析方法。在20世纪中叶,数值分析开始真正迅速发展,随着计算机和相关技术的发展,数值分析的应用已经深入科学、工程技术和经济等领域,在这期间,它自身的发展也是十分迅速的。现在,很多复杂的、大规模的计算问题都可以在计算机上实现,新的、更有效的计算方法在不断出现。科学与工程计算已经成为自然科学、工程和技术科学不断发展所必需的研究手段与阐述方法。
在计算机上求解一个科学技术问题通常经历以下步骤。
(1)根据实际问题建立数学模型;
(2)由数学模型给出数值计算方法;
(3)根据数值计算方法编制算法程序(数学软件),并在计算机上计算出结果。
数值分析主要对应这个过程的第(2)步,需要对各种方法进行研究和分析,该过程涉及的因素主要包括误差、稳定性、收敛性、计算工作量(复杂度)、存储量和自适应性等。这些基本的因素用于确定数值分析的适用范围、可靠性、准确性、效率和使用的方便性等。
数值分析与计算机及其他学科有着十分紧密的联系,它除了具有纯数学的高度抽象性与严密科学性等特点,还有以下特点。
(1)面向计算机。根据计算机的特点,数值分析可提供切实可行的算法,即算法只能包括加、减、乘、除运算和逻辑运算,这些运算是计算机能直接处理的运算。
(2)有可靠的理论分析。数值分析能任意逼近结果真值并达到精度要求,其近似算法要保证收敛性和数值稳定性,还要对误差进行分析,这些都建立在相应数学理论的基础上。
(3)有较低的复杂度。较低的计算复杂度指计算所需时间较少;较低的空间复杂度指计算所需的存储空间较小,这也是建立算法需要研究的问题,它关系到算法能否在计算机上实现。
(4)可进行数值实验。任何一个数值分析算法除了从理论上满足上述特点外,还要通过数值实验证明其有效。
在实际的科学与工程计算中,所计算的问题往往是大型的、复杂的和综合的。数值分析的基本内容包括线性代数问题(方程组问题、特征值问题和线性最小二乘问题)、非线性方程和方程组的数值解法、函数的插值和逼近、数值微分和积分及常微分方程初值问题的数值解法等。
根据“数值分析”课程的特点和要求,读者学习时首先要注意掌握方法的基本原理和思想,要注意方法处理的技巧及其与计算机的结合,要重视误差分析、收敛性及稳定性的基本理论;其次,要通过例子,学习使用各种数值方法解决实际计算问题,学习算法编程实现的方法和技巧;最后,为了掌握本课程内容,还应做一定的理论分析和编程实现练习。本课程内容包括了线性代数、微积分等的数值方法,读者必须掌握上述课程的基本内容,另外还需要掌握一定的编程知识和编程语言。
1.2数值计算的误差
1.2.1误差的来源和分类
误差是数值计算所得到的近似解与实际问题的精确解之间的差别。在科学计算中误差是不可避免的,用数学方法解决实际问题时,通常按照以下步骤进行:实际问题(抽象简化)→数学模型(数值计算)→问题近似解。
下面介绍误差的分类,误差可以分为如下四类。
1.模型误差
给实际问题建立数学模型的过程,是将复杂的实际问题抽象、归结为数学问题的过程,由于不可能将所有因素都考虑进去,所以往往会将一些次要因素忽略,对问题做一些必要的简化。这样建立的数学模型必然会与实际问题存在差别,产生误差,即数学模型的解与实际问题的解之差,这种误差称为模型误差(modeling error)。
2.观测误差
建模和具体运算过程所采用的一些初始参量数据往往是通过实际观测得来的,由于观测设备本身精度的问题,观测值和理论值必然会存在误差,观测值只能是近似的,这种误差称为观测误差(observational error)。
3.截断误差
问题通常难以求出精确解,需要把问题简化为较易求解的问题,以简化问题的解作为原问题的解的近似。比如,求一个收敛的无穷级数之和,总是用它的部分和作为近似值,截去该级数后面的无穷多项,即仅保留无穷过程的前段有限序列,这就带来了误差,称其为截断误差(truncation error)或方法误差。
例如,函数sinx和ln1.可分别展开为无穷幂级数:
若取级数的起始若干项的和作为x.1时函数值的近似计算公式,例如,取
则它们的第四项和以后各项都舍弃了,自然产生了误差,这就是截断误差。
4.舍入误差
在计算的过程中往往要对数字进行舍入。比如,某些无理数和有理数实数化会出现无限循环小数,如等。而计算机受机器字长的限制,它能表示的数据只能有一定的位数,这时就需要把数据按四舍五入法则舍入成一定位数的近似值来代替,由此引起的误差称为舍入误差(round-offerror)或凑整误差。
例如,在10位十进制数限制下:而实际是.
1.2.2绝对误差与相对误差
1.绝对误差和绝对误差项
定义:设x为准确值,x*为x的一个近似值,称.*.x*.x为近似值x*的绝对误差,简称误差。
误差可正可负。当时,近似值偏大,叫强近似值;当时,近似值偏小,叫弱近似值。误差的大小反映了实验、观察、测量和近似计算等所得结果的精确程度。
由于准确值和的准确值无法计算出,但一般可估计出绝对误差的上限,即可求出一个正数,使得.
则称为近似值的绝对误差项,简称误差项,或称精度。有时也写为
值越小,表示该近似值x*的精度越高。
例1:已知,求近似值的误差项。
所以误差项分别为。
2.有效数字
在例1中,x1*、x2*、x3*的误差都不超过其末位数字的半个单位,即
定义:若x的近似值x*的误差项.是某一位上的半个单位,该位到x*的第一位非零数字共有n位,则称x*有n位有效数字,可表示为
式中,都是中的一个数字,均为整数。
若x*的误差项.*
则称x为具有n位有效数字的有效数,其精度为。
例2:设是某数x经四舍五入所得,则其误差项不超过x*末位的半个单位,即
故该不等式又可写成.
由有效数字定义可知,有位有效数字,分别是。
由有效数字定义可知,x*有3位有效数字,分别是。
3.相对误差
用绝对误差不能完全评价近似值的精确度,因此评价一个近似值的精确度,除了要看其绝对误差的大小,还必须考虑该量本身的大小,这就需要引进相对误差的概念。
定义:设x为准确值,x*为x的一个近似值,则近似值的误差.*与准确值x的比值
称为近似值x*的相对误差,记作.r*。
在实际应用中,由于准确值x总是难以求出,通常取.
作为x*的相对误差。相对误差也可正可负,它的绝对值上界叫作相对误差项,记作
相对误差不仅能表示出绝对误差,而且在估计近似值计算结果时,相对误差比绝对误差更为重要。相对误差也很难准确求取,但也和绝对误差一样,可以估计它的大小范围,即有一个正数.,使
则称为近似值x*的相对误差项。
4.有效位数与误差的关系
由可知,从有效数字可以算出近似数的绝对误差项;有效数位n越多,则绝对误差项越小,并可以从有效数字中求出其相对误差项。
当近似值x*具有n位有效数字时,显然有*
则其相对误差的绝对值为