绪论
数值分析Numerical Analysis研究数值求解各类数学问题的方法和相应的数学理论,研究的对象是数学问题,所用的方法是数学方法,因此也称为数值数学(Numerical Mathematics)
数值分析研究的内容可以划分为以下几个主要方面:
- 数值代数: 主要包括线性代数方程组和非线性方程与方程组的数值解法,特征值与特征向量的数值计算等内容
- 数值逼近: 主要包括函数逼近、数值微分和数值积分等内容
- 常微分方程与动力系统的数值解法
- 偏微分方程的数值解法
- 最优化理论和方法,主要研究在一定的约束条件下如何选取某些因素的值,使某项或者某几个指标达到最优
- 误差理论: 主要研究近似方法的误差(即数值结果与原问题精确解之间的误差)以及影响误差的主要因素,因为每一中数值方法严格说来都是近似方法,这是数值分析中非常重要的一个问题。
数值方法的特点
求解一个数学问题的数值方法就是要给出该问题的一个近似的数值结果,因此,首先数值结果就要能算的出来,其次结果应有一定额精度,满足实际问题的要求,一般要求误差满足制定的值ϵ,最后,计算时间应该尽可能的少
求解一个数学问题一般会有多种数值方法,在保证所需精度的条件下,计算时间越少的数值方法越好,对串行机而言,这相当于计算量越少越好。
例1-1 考虑求解线性代数方程组Ax=b,其中系数矩阵A是n×n的方阵个,其行列式D≡detA=0
按照克拉默(Cramer)法则,则解为xi=Di/D
每个行列式按照Laplace展开计算,这就给给出额一个求解例1-1的数值方法,下面分析该算法的计算量,xi=Di/D共需计算n+1个行列式,用laplace展开计算n阶行列式,约需要n!次乘法,这样,不计加法,该算法共需要n+1n!=n+1!以上的乘法,对于一个20阶的方程组,就需要20!≈5.11∗1019次以上的乘法,设用每秒可做亿次乘法的计算机,一年可以做365×24×3600×108≈3.15×1015次乘法,所以用此计算机上用克拉默法则求解20阶的线性方程组,需要的时间在5.11×1019÷3.15×1015≈1.62×104=1.62万年以上
而使用高斯(Gauss)消元法求解,乘除的运算次数不超过3074次,与克拉默法则比较运算量有天壤之别,方程组的阶数增大,运算量的差别还会更大。
一个数值方法一般包括若干计算公式,递推化是许多计算公式采取的形式,其基本思想是将一个相对复杂的计算你过程归结为简单过程的多次重复,而这次计算机上是可以通过循环来实现
例1-2 考虑对于给定的x计算多项式Px=a0xn+a1xn−1+⋯+an−1x+an的值
可以将它改写成等价形式
Px=a0xn−1+a1xn−2+⋯an−2x+an−1x+an=a0xn−2+a1xn−3+⋯an−3x+an−2x+an−1x+an=⋯a0x+a1x+a2x+⋯+an−1x+an
就可以得到递推公式
v0=a0
vk=xvk−1+ak
vn=Pnx
这一算法被称为霍纳(Horner)算法,我们也称为秦九韶算法。
例1-3 计算积分∫01xnex−1dx
解 利用分部积分公式,可以得到递推关系In=1−nIn−1
数制
一个数通常写成A=dndn−1dn−2⋯d1d0.d−1d−2⋯d−m, 此时0≤dj≤9且dj为整数A=∑−mndj10j−1这是十进制数的表达,
计算机内部采用的进制不是十进制而是二进制、八进制等。A=−m∑ndjkj−1,k={2,8,⋯}
浮点数
任意一个实数x,可以用整数部分加小数部分来表示,也可以表示为x=s×10k
误差
数值计算式近似求解数学模型,误差是不可避免的,数学模型是由自然现象或社会现象归结出的,但与实际的自然现象或社会现象又有差别,这种差别称为模型误差,进行数值计算自然要考虑这一误差,要求数值计算的精度高于模型误差是没有意义的。
绝对误差、相对误差
设x是数x˙的近似值,误差x−x˙的具体数值通常是无法确定的,但可以设法给出其绝对值的一个上界∣x−x˙∣=∣ϵ∣≤E,称ϵ=x−x˙为x˙的近似值x的绝对误差,E为绝对误差限
记δ=xx−x˙,称δ为近似值x的相对误差,若∣xx−x˙∣≤Δ,则称Δ为x的相对误差限
舍入误差
一个数x˙与它经过舍入或者截断产生的近似数x之间的误差
截断误差
许多数学计算(微分、积分、无穷级数求和)是通过极限过程定义的,但是在计算机只能完成有限次的运算,用有限过程近似无穷过程,表现为对无穷过程的截断,由此产生的误差
传播误差
许多数值方法都是有递推公式的形式给出的,初始数据往往都是具有误差的,每一步的计算也都会产生舍入误差,这些误差也需要进行运算,会影响后面的计算结果,即这些 误差要向后传播,由此产生的误差
求解一个数学问题可以有多种数值方法,如果一种数值方法的传播误差不太大(或者说是可以控制的),则称方法是稳定的,否则是不稳定的