Transcript 第一章绪论
数 值 分 析
(第 4 版)
李庆扬 王能超 易大义 编
清华大学出版社
施普林格出版社
1
• 数值分析课程
• 教师:罗蕴玲
• 学时:50+10
• 电话:81720522
• 讲课时间:3~16周
• E-mail:
• 上机时间:16~18周
• 平时成绩:上机
测验
[email protected]
• 办公室:1-812
作业
答疑时间:
出勤
周一下午2:30-4:30
• 期末考试:半开卷
周三下午3:30-5:00
具体考核方案
2
第1章 绪 论
1.1 数值分析研究对象与特点
3
先看两个例子。
例1 求方程 x2=2sinx,在区间(1,2)内的根。
理论上可知显然找不出根的解析式,即无法求出
精确解。
例2 用Cramer法则求解n元线性方程组。
显然理论上可行,且有精确表达式。实际计算时
会出现什么问题呢?
4
看用数学和计算机解决实际问题的过程:
实际问题
应用数学研究的任务
数学模型
数值计算方法
数值分析研究的对象
上机计算求出结果
最终提供的是针对各类数学问题的数值算法
(即计算公式、计算方案、计算过程)
5
数值分析提供的算法具有下面四个特点:
1、面向计算机
2、有可靠的理论分析
3、具有好的计算复杂性
4、通过数值实验验证有效性
6
本门课程学习的主要内容:
误差分析,插值法与拟合,数值积分,数值微分,
解线性方程组的直接方法和迭代方法,非线性方程求根,
矩阵特征值问题计算.
7
1. 认识建立算法和对每个算法进行理论分析是基本
任务,主动适应“公式多”的特点;
2. 注重各章建立算法的问题的提法,搞清问题的基
本提法,逐步深入;
3. 理解每个算法建立的数学背景,数学原理和基本
线索,对最基本的算法要非常熟悉;
4. 认真进行数值计算的训练,学习各章算法完全是
为用于实际计算,必须真会算。
8
• 本课程的基本要求
– 掌握数值方法的基本原理
– 掌握常用的科学与工程计算的基本方法
– 能用所学方法在计算机上算出正确结果
9
课程学习结束后你具备的能力
1. 对具体的数值计算问题,你会选择合适
的算法,并通过计算机计算出正确结果;
2. 对给定的算法会从理论上分析其优劣性;
3. 会根据原理构造解决较简单数值计算问
题的算法。
10
1.2 数值计算的误差
1.2.1 误差来源与分类
引言——为什么要进行误差分析?
例1 用具有舍入功能的八位计算器直接计算下式:
y arctan5430 arctan5429
结果为
y arctan5430 arctan5429
1.5706122 1.5706121 0.000000
1
6个 零
事实上 y arctan5430 arctan5429
0.0000000
3392191
7个 零
结果
不可靠
11
例2 用求根公式在尾数为八位的浮点计算机上,求下面方程的根:
x 2 (109 1) x 109 0
解
b b 2 4ac
b b 2 4ac
x1
, x2
2a
2a
计算机上
10
10
b 109 1 0.1 1010 0.000000000
1
10
=
0
.
1
10
9个 零
b 2 4ac (0.1 1010 )2 4 1 109 (0.1 1010 )2 4 0.1 1010
19
19
0.1 1019 0.00000000
4
10
0
.
1
10
8个 零
求得
计算机上
x1 0, x2 0.1 1010 109
9
x
1
,
x
10
事实上 1
2
12
用计算机解决实际问题的一般过
程
应用数学解决的问题
实际问题
建立数
学模型
模型误差、观测误差
数值分析解决的问题
确定数
值解法
截断误差
上机求解
舍入误差
在此主要研究这两种误差
13
1.2.2 误差与有效数字
一、绝对误差
定义1
设 为准确值,
x
x * 为 x的一个近似值,称
e* x * x
为近似值的绝对误差, 简称误差.
误差 可正可负,当绝对误差为正时近似值偏大,叫
e*
强近似值;当绝对误差为负时近似值偏小,叫弱近似值.
通常准确值 是未知的,
x
因此误差 e也未知.
*
若能根据测量工具或计算情况估计出误差绝对值的一个上
界,即
e * x * x *,
则 叫做近似值的误差限,
*
它总是正数.
14
对于一般情形
也可以表示为
x * ,
x * 即 x * * x x * *,
x x * * .
1
1 1
2 1
例3 求 3的近似值,使其绝对误差限精确到 10 , 10 , 10 3.
2
2
2
解 因为 3 1.73205 ,而
1
101
2
1
*
(1.73) 3 1.73 0.00205 0.005 10 2
2
1
* (1.732) 3 1.732 0.00005 0.0005 10 3
2
* (1.7)
所以
3 1.7 0.03205 0.05
x1* 1.7, x2* 1.73, x3* 1.732.
注意:(1)绝对误差限不是唯一的,但越小越好;
(2)绝对误差限的大小并不能完全表示近似值的好坏。
15
二、相对误差
的比值
定义2 把近似值的误差 与准确值
x
e*
e*
x*x
x
x
称为近似值 x的相对误差,
*
实际计算中,
er*
记作 er*.
由于真值 x总是未知的,通常取
e*
x*x
x*
x*
e*
作为 x的相对误差,
*
条件是 | er* ||较小,
|
x*
e* x * x , 知
此时利用
16
e* e*
e * ( x * x)
x
x*
x* x
( e*) 2
x * ( x * e*)
( e * / x*) 2
1 ( e * / x*)
*
是 e的平方项级,
故可忽略不计.
r
相对误差也可正可负,它的绝对值上界叫做相对误差限,
记作 , 即
*
r
*
r
*
x*
.
17
三、有效数字
当准确值 位数比较多时,常常按四舍五入的原则得
x
到 x的前几位近似值 ,
x * 例如
x π 3.14159265
3 * 0.002,
取3位
x3 * 3.14,
取5位
x5 * 3.1416, 5 * 0.000008,
它们的误差都不超过末位数字的半个单位, 即
1
10 2 ,
2
1
π 3.1416 10 4.
2
π 3.14
18
若近似值 的误差限是某一位的半个单位,
x*
定义3
该位到 x的第一位非零数字共有
位,就说
有
n
*
x *位有效数字.
n
表示为
x* 10 m (a1 a2 10 1 an 10 ( n 1) ), (2.1)
其中 ai (i 1,是0到9中的一个数字,
, n)
为整数,
a1 0, m
且
x x*
1
10 m n 1.
2
(2.2)
例如 3.142,3.141,3.1416分别作为π的近似值时分别有几位
有效数字?
19
重力常数g,
例4
如果以 m/s2 为单位,g 9.80m/s 2 ,
若以km/s2为单位,
g 0.00980,它们具有几位有效数字?
km/s 2
绝对误差和相对误差有区别吗?与量纲有关吗?
因为按第一种写法
g 9.80
1
10 2 ,
2
按(2.1)的表示方法, m 0, n 3, 按第二种写法
g 0.00980
1
10 5 ,
2
这里 m 3, n 3.
它们虽然写法不同,但都具有3位有效数字.
20
x* 10 m (a1 a2 10 1 an 10 ( n 1) ), (2.1)
至于绝对误差限,由于单位不同所以结果也不同,
1*
1
1
10 2 m/s 2 , 2* 10 5 km/s 2 ,
2
2
但相对误差都是
r* 0.005 / 9.80 0.00005 / 0.00980.
注意相对误差与相对误差限是无量纲的,而绝对误差
与误差限是有量纲的.
例4说明有效位数与小数点后有多少位数无关.
21
从(2.2)可得到具有 位有效数字的近似数
,其绝对
x*
n
误差限为
1
* 10 m n 1 ,
2
m n 1
在m
相同的情况下, 越大则
n
10越小,故有效位数越
多,绝对误差限越小.
1
x x * 10 m n 1.
2
(2.2)
22
关于有效数字说明
① 用四舍五入取准确值的前n位x*作为近似值,则x*必有n位
有效数字。如3.142作为 的近似值有4位有效数字,而
3.141为3位有效数字;
② 有效数字相同的两个近似数,绝对误差不一定相同。例
如,设x1*=12345,设x2*=12.345,两者均有5位有效数字
但
绝对误差不一样
x - x1* = x - 12345 ≤ 0.5= 1/2 100
x - x2* = x - 12.345≤0.0005=1/210-3
③ 把任何数乘以10 p(p=0,1,…)不影响有效位数;
④ 准确值具有无穷多位有效数字,如1/2=0.5 因0.5是真值,
没有误差,*=0,因此n,准确值具有无穷位有效数字。 23
四、有效数字与相对误差限的关系
*
定理1 设近似数 x表示为
x* 10 m (a1 a2 10 1 al 10 (l 1) ),
其中 ai (i 1,
是0到9中的一个数字,
, l)
若 具有
x * 位有效数字,
n
(2.1)
a1 0, m为整数.
则其相对误差限为
1
10 ( n 1) ;
2a1
*
r
反之, 若 x 的相对误差限
*
1
, 10 ( n 1)
2( a1 1)
*
r
则 x至少具有
位有效数字.
*
n
24
例5要使
的近似值的相对误差限小于0.1%,需取
20
几位有效数字?
设取 位有效数字,
n
由定理1
1
10 ( n 1).
2a1
*
r
由于
20 4.4 , 知 a1 ,4
故只要取 n ,4 就有
r* 0.125 103 103 0.1%,
即只要对
的近似值取4位有效数字,其相对误差限就
20
小于0.1%. 此时由开方表得 20 4
. .472
25
1.2.3 数值运算的误差估计
一般情况下,当自变量有误差时函数值也产生误差,
其误差限可利用函数的微分进行估计.
设
的近似值为
,以x * 近 f (x*)
f是一元函数,
(x)
x
似 f (x
,其误差界记作
)
( f,
( x*))
利用微分
f ( x ) f ( x*) f ( x*)( x x*) o( x x*)
由此可得:
df ( x ) | x x* o( x x*)
e( f ( x*)) f ( x*) e( x*).
( f ( x*)) f ( x*) ( x*).
f ( x*)
x * f ( x*)
er ( f ( x*))
e( x*)
er ( x*).
f ( x*)
f ( x*)
f ( x*)
x * f ( x*)
r ( f ( x*))
( x*)
r ( x*).
f ( x*)
f ( x*)
26
当 为多元函数,如计算
f
x1 ,的近似值为
, xn
A f (时,
x1 , xn )
*
*
x,
,
,
x
1
n
如果
则 A的近似值为
*
A* f ( x1* , xn
),
于是由全微分,
函数值 A的误差
*
e(为
A*)
*
e( A*) A * A f ( x1* ,, xn
) f ( x1 ,, xn )
*
f ( x1* , , xn
) *
( xk xk )
xk
k 1
n
f
x
k
k 1
n
*
*
ek ,
于是误差限
f
( A*)
k 1 x k
n
*
( xk* );
27
而 A 的相对误差及相对误差限限分别为
*
er*
er ( A*) e( A*)
A*
*
f
x
k
k 1
e( x k* )
A*
n
f
k 1 x k
n
r*
r ( A*)
( A*)
f
A*
k 1 x k
n
f
k 1 x k
n
*
x k*
er ( x k* )
A*
*
( x k* )
A*
*
xk*
r ( xk* )
A*
28
练习:
1.
y f ( x), y* f ( x* ),求er ( y* );
2.
y x n , y* ( x* )n , 求er ( y* );
3.
D1 10 0.05(cm), D2 5 0.1(cm),
S
4
( D D ),求 ( S )和 r ( S );
2
1
2
2
*
*
x
4. (1)u x y ( 2)u xy ( 3)u
y
求e( u* )和er ( u* ) .
5. 测量一木板长为954cm,问测量的相对误差
是多大?
29
1.3 误差定性分析与避免误差危害
1.3.1 病态问题与条件数
对一个数值问题本身, 如果输入数据有微小扰动(即误
差),引起输出数据(即问题解)相对误差很大,这就是病
态问题.
例如计算函数值
f时,
(x)
若 x有扰动 x x
,其
x*
相对误差为 x, 函数值 f (x的相对误差为
*)
x
f ( x) f ( x*)
.
f ( x)
30
相对误差比值
f ( x) f ( x*) x
x f ( x)
/
Cp ,
f ( x)
x
f ( x)
(3.1)
C称为计算函数值问题的条件数.
p
自变量相对误差一般不会太大,如果条件数 很大,
Cp
将引起函数值相对误差很大,出现这种情况的问题就是病态
问题.
31
例如,
f ( x), x n
则有
x nx n 1
x f ( x)
n,
Cp
n
x
f ( x)
它表示相对误差可能放大 n倍.
如 n,
,) 1.24
10 有 f (1) 1, f (1.02
若取 x 1,
, 函数值相对误差为 24,
%
x* 1.02, 自变量相对误差为 2%
这时问题可以认为是病态的.
一般情况下,条件数
越大C p
C 就认为是病态,
p 10
病态越严重.
32
1.3.2 算法的数值稳定性
用一个算法进行计算,如果初始数据误差在计算中传播
使计算结果的误差增长很快,这个算法就是数值不稳定的.
例6计算
In
1
0
x ne x 1并估计误差.
dx ( n 0,1, )
由分部积分可得计算 的递推公式
In
I n 1 nI n1
I0 e
1
1
0
(n 1,2,),
(3.2)
e x dx 1 e 1.
问题:由递推公式(3.2)可以构造几种计算积分序列{In}(n=1,2,
…,N)的算法?假设计算中只有初始值带有误差,计算过程中不
产生新的误差,请判断哪种方法能给出更精确的结果。
33
算法A:计算公式为 I n 1 nI n1 ( n 1,2,, N )
~
若初值 I~有误差
则由此引起以后各步计算的误差
E0 I 0 I 0
0
~
En nEn 1 (n 1,2,).
满足关系
En I n I n
n!
则 En (1) n n! E0 , 这说明 I~的误差被放大了
倍.
n
1 In
算法B:计算公式为 I n1
n
1 *
*
*
记 En* I,
则
,En
E
I
0
n
n
n!
n! 倍。
( n N ,2, ,1)
*
E0* 比 E缩小了
n
看数值计算结果,见书p13.
显然算法B的计算结果更精确、更可靠,当用算法A计算时,
由于误差传播是逐步扩大的,因而计算结果不可靠.
此例说明,数值不稳定的算法是不能使用的.
34
一个算法如果输入数据有误差,而在计算过
定义4
程中舍入误差不增长,则称此算法是数值稳定的,否则称
此算法为不稳定的.
在例6中算法(B)是数值稳定的,而算法(A)是不
稳定的.
35
1.3.3 避免误差危害的若干原则
数值计算中首先要分清问题是否病态和算法是否数
值稳定,计算时还应尽量避免误差危害,防止有效数字
的损失,有下面若干原则.
1. 要避免除数绝对值远远小于被除数绝对值的除法
x
用绝对值小的数作除数舍入误差会增大,如计算 若
,
y
0 y,
x ,
*
*
*
*
x*
e
(
x
)
x
e
(
y
)
1
|
x
|
*
*
e *
|
e
(
x
)
|
|
e
(
y
)|
则可能对计算结果带来
*
* 2
*
* 2
y
y
(y )
|y |
(y )
严重影响,应尽量避免.
36
2. 要避免两相近数相减
在数值计算中两相近数相减有效数字会严重损失.
分析前述例1
y arctan5430 arctan5429
1.5706122 1.5706121 0.000000
1
8位有效数字
8位有效数字
0位有效数字
6个 零
y arctan 5430 arctan 5429 0.0000000
3392191
7个 零
这说明必须尽量避免出现这类运算. 最好是改变计算方法,
防止这种现象产生.
37
由
arctan
arctan
arctan
,可得
改变计算公式:
1
1
arctan5430 arctan5429 arctan
3.3921911 10 8
29479471
精度提高了很多。此例说明,可通过改变计算公式避免或
减少有效数字的损失。
类似地,如果 和
x1 很接近时,由
x2
x1
lg x1 lg x2 lg
,
x2
用右边算式有效数字就不损失.
当 很大时,
x
x 1
x
也应该用右端算式代替左端.
1
x 1
x
,
38
3. 要防止大数“吃掉”小数
在数值运算中参加运算的数有时数量级相差很大,
而计算机位数有限,如不注意运算次序就可能出现大数
“吃掉”小数的现象,影响计算结果的可靠性.
前面用求根公式求根的例2中, 109 吃掉了1,
现改变计算公式如下:
b
x1
b
b 2 4ac
,b 0
2a
,
b 2 4ac
,b 0
2a
c/a
x2
x1
39
4. 注意简化计算步骤,减少运算次数
同样一个计算问题,如果能减少运算次数,不但可节省
计算机的计算时间,还能减少舍入误差.
这是数值计算必须遵从的原则,也是“数值分析”要研
究的重要内容.
40
例7
计算多项式
Pn ( x) an x n an 1 x n 1 a1 x a0
k
的值, 若直接计算 ak x再逐项相加,一共需做
n(n 1)
n (n 1) 2 1
2
次乘法和 n次加法.
若采用秦九韶算法
Pn ( x ) x (an x n1 an1 x n 2 a1 ) a0
x ( x ( x (an x an1 ) an 2 ) a1 ) a0
S n an ,
S k xS k 1 a k ( k n 1, ,2,1,0),
P ( x) S ,
0
n
只要 n次乘法和 次加法就可算出
n
Pn的值.
(x)
在“数值分析”中,这种节省计算次数的算法还有不少.
41