78

Click here to load reader

数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

Embed Size (px)

DESCRIPTION

数 值 分析 游 雄 [email protected] 南京农业大学理学院 2010 年 9 月 -2011 年 1 月. Numerical Analysis. You Xiong [email protected]. College of Science Nanjing Agricultural University Sept. 2010-Jan. 2011. 评分 Grading Policy. Homework: 15%. Numerical Experiments: 15% (please send to [email protected]). - PowerPoint PPT Presentation

Citation preview

Page 1: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

数 值 分析游 雄

[email protected]

南京农业大学理学院2010 年 9 月 -2011 年 1 月

Page 2: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

Numerical Analysis

You Xiong

[email protected]

College of Science Nanjing Agricultural University

Sept. 2010-Jan. 2011

Page 3: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

Homework: 15%

评分 Grading Policy

Final exam: 70%

Numerical Experiments: 15%(please send to [email protected])

Page 4: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

李庆扬、王能超、易大义 . 数值分析 , 第五版 .北京,清华大学出版社 , 2008.

Text Book

J. Mathews and K. Fink. Numerical Solutions Using Matlab, 3rd edition. Clifford A Shaffer, 1999. ( 电子工业出版社,影印版, 2002)

Reference Book

Page 5: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

5

第 1 章

数值分析与科学计算引论

Page 6: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

6

1.1 数值分析的对象、作用与特点

1.2 数值计算的误差

1.3 误差定性分析与避免误差危害

1.4 数值计算中算法设计的技术

1.5 数学软件

Page 7: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

7

数值分析也称为计算数学,或称计算方法,是数学科学的一个主要分支 .

( 1 )对实际问题建立数学模型;

计算数学研究用计算机求解各种数学问题的数值计算方法及其理论与软件实现 . 其基本过程为:

1.1 数值分析的对象、作用与特点

( 2 )对数学模型,设计数值计算方法,对给予理论分析;

( 3 )利用数学软件编制程序,在计算机上计算出结果。

Page 8: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

8

建模

实际问题

数学模型

上机计算求出结果

数值计算方法算法设计

数学软件编程

Page 9: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

9

数值分析的主要内容:

( 1 )函数的数值逼近(插值)、与数据的曲线拟合

( 2 )数值线性代数(线性方程组与矩阵特征值的数值求解)

( 3 )数值微分与数值积分( 4 )非线性方程数值解

( 5 )微分方程数值解(常微和偏微)等 .

( 6 )数值优化等 .

Page 10: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

10

数值计算的基本思想:近似

常用近似手段:连续问题离散化 → 数值问题

【例】微分方程初值问题:

0)0(,d

d 22 yyxx

y

的解是一个连续函数: ).(xyy

数值问题 : 给出函数 )(xyy 在区间 [a, b]内一系列离散点

niihaxi ,,2,1 , 上的近似值 .,,2,1 ),( nixyy ii

近似值满足一定的精度要求 .

Page 11: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

【算法研究的重要性】 ---- 以行列式的计算为例

常用算法:n

n

nni

iiiii

iiinn aaaA

)(

21)(

21

21

21)1()det(

其中 )( 21 niii 是 1,2,…,n 的一个全排列, )( 21 niii 是

)( 21 niii 的逆序数 .

乘法次数: (n- 1)n!

Gauss 列主元消去法( Ch5 ) : n=20, n+1 个行列式,需 3060 次乘除法 .

用 2 亿次 / 秒的计算机: 计算 20 阶行列式需732.8948 年, 计算 100 阶行列式需 1.464910143 年!

Page 12: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

12

( 1 )简单操作:算术运算( + , - , ×, / ) , 逻辑运算

算子包括:

数值算法:输入元 + 算子(运算序列) + 输出元

( 2 )宏操作:向量运算、数组传输、基本初等函数求值

面向计算机的数值算法有两类:

( 1 )串行算法:单进程(适用于串行计算机)

( 2 )并行算法:多进程(适用于并行计算机)

Page 13: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

13

(3) 要有好的计算复杂性 ( 可行性 )

时间复杂性好:省时间;空间复杂性好:节省存储量 .

数值分析的特点:

(1) 面向计算机 能根据计算机特点提供切实可行的有效算法 .

(2) 要有可靠的理论分析 分析算法的收敛性和数值稳定性,对误差进行估计 .

(4) 要有数值实验 通过计算机上数值试验证明算法的有效性 .

Page 14: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

1.2 数值计算的误差

1.2.1 误差来源与分类 (error)

模型误差:数学模型与实际问题之间出现的误差 . 观测误差 : 由观测数据过程产生的误差 .

(这两种误差“数值分析”中不讨论) 截断误差 (truncation

error)或方法误差:数值方法求解数学模型时近似解与精确解之间的误差 .

建模 (简化、近似)

实际问题

数学模型

数值结果 数值计算

Page 15: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

15

【例】用泰勒 (Taylor)多项式

nn

n xn

fx

fx

ffxP

!

)0(

!2

)0(

!1

)0()0()(

)(2

,)!1(

)()()()( 1

)(

n

n

nn xn

fxPxfxR

近似代替函数 ,)(xf 则数值方法的截断误差是

.0 之间与在 x

Page 16: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

16

就是舍入误差 .

0000026.014159.3π R

【例】

初始数据的误差通常也归结为舍入误差 .

舍入误差:由于字长的限制,在计算机用浮点数表示数据(原始数据及计算所得数据)时产生的误差 .

用 3.14159近似代替 产生的误差

本节主要讨论舍入误差对计算的影响,而截断误差将在以后各章结合具体算法加以研究 .

Page 17: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

17

若能根据测量工具或计算情况估计出误差绝对值的一个

1.2.2 误差与有效数字

设 为准确值,x 为 的一个近似值,*x x

xxe **

误差 可正可负,当绝对误差为正时近似值偏大,叫强近似值;

*e

通常准确值 是未知的,x 因此误差 也未知 .*e

为近似值的绝对误差,

定义 1 称

简称误差 .

当绝对误差为负时近似值偏小,叫弱近似值 .

Page 18: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

18

上界,即

*** xxe

则 叫做近似值的误差限,* 它总是正数 .

例如,用毫米刻度的米尺测量一长度 ,读出和该长度接近的刻度 ,

x

*x 是 的近似值,*x x 它的误差限是 ,mm5.0

于是 mm.5.0* xx

如读出的长度为 ,mm765 则有 .5.0765 x

虽然从这个不等式不能知道准确的 是多少,但可知x

Page 19: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

19

,5.7655.764 x

结果说明 在区间 内 .x ]5.765,5.764[

对于一般情形 ,** xx 即

*,*** xxx

也可以表示为.** xx

但要注意的是,误差限的大小并不能完全表示近似值的好坏 .

Page 20: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

20

例如,有两个量 , 110x ,51000y

;1,10* * xx

.5,1000* * yy

虽然 比 大 4 倍,*y *

x 但

1000/5*/* yy %5.0

比 10/1*/* xx %10

要小得多,这说明 近似 的程度比 近似 的程度好 .

*y y *x x

所以除考虑误差的大小外,还应考虑准确值 本身的大小 .

x

Page 21: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

21

实际计算中,由于真值 总是未知的,x

*

*

*

**

x

xx

x

eer

把近似值的误差 与准确值 的比值 *e x

x

xx

x

e

**

称为近似值 的相对误差,*x 记作 .*re

作为 的相对误差,*x 条件是 较小,*

**

x

eer

通常取

此时利用

,** xxe 知

Page 22: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

22

相对误差也可正可负,它的绝对值上界叫做相对误差

限,

xx

xxe

x

e

x

e

*

)*(*

*

**

是 的平方项级,*re

记作 ,*r

*)*(*

*)( 2

exx

e

*)/*(1

*)/*( 2

xe

xe

故可忽略不计 .

.*

**

xr

Page 23: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

23

%,10*

*

xx

%,5.0*

*

yy

上例中 与 的相对误差限分别为x y

可见 近似 的程度比 近似 的程度好 . *y y *x x

根据定义,

Page 24: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

24

当准确值 位数比较多时,常常按四舍五入的原则得到 的前几位近似值 ,

x

x *x

14159265.3π x

取 3 位 ,14.3*3 x

取 5 位 ,1416.3*5 x

它们的误差都不超过末位数字的半个单位,

,102

114.3π 2

例如

,002.0*3

,000008.0*5

.102

11416.3π 4

Page 25: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

25

若近似值 的误差限是某一位的半个单位,*x

该位到 的第一位非零数字共有 位,就说 有 位有效数字 .

*x n *x n

表示为

),1010(10* )1(121

nn

m aaax ( 2.1)

其中 是 0 到 9 中的一个数字, 为整数,

),,1( niai ma ,01

.102

1* 1 nmxx ( 2.2)

定义 2

Page 26: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

26

取 作为 的近似值,14.3* x π

取 ,π3.1416* x

按这个定义,如果*x 就有 3 位有效数字,

*x 就有 5 位有效数字 .

Page 27: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

27

按四舍五入原则写出下列各数具有 5 位有效数字的

按定义,

187.93, 0.037856, 8.0000, 2.7183.

的 5 位有效数字近似数是 8.0000,而不是8 ,

000033.8x

例 1

近似数:187.9325, 0.03785551, 8.000033, 2.7182818.

上述各数具有 5 位有效数字的近似数分别是

因为 8 只有 1 位有效数字 .

注意:

Page 28: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

28

如果以 m/s2 为单位, 重力常数 g , ,m/s80.9 2g

若以 km/s2 为单位, ,它们都具有 3 位有效数字,

2km/s00980.0g

,102

180.9 2g

按 (2.1)的表示方法, ,3,0 nm

,102

100980.0 5g

这里 .3,3 nm

它们虽然写法不同,但都具有 3 位有效数字 .

例 2

因为按第一种写法

按第二种写法

Page 29: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

29

至于绝对误差限,由于单位不同所以结果也不同

,m/s102

1 22*1

但相对误差都是 80.9/005.0* r

注意相对误差与相对误差限是无量纲的,而绝对误差与误差限是有量纲的 .

例 2 说明有效位数与小数点后有多少位数无关 .

,m/s102

1 25*2

.00980.0/00005.0

Page 30: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

30

从 (2.2)可得到具有 位有效数字的近似数 ,其绝对误差限为

n *x

,102

1* 1 nm

在 相同的情况下, 越大则 越小,故有效位数越多,绝对误差限越小 .

m n 110 nm

Page 31: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

31

若 的相对误差限 ,*x )1(

1

* 10)1(2

1

nr a

设近似数 表示为 *x

)1.2(),1010(10* )1(121 l

lm aaax

其中 是 0 到 9 中的一个数字,),,1( liai

;102

1 )1(

1

* nr a

反之,

则 至少具有 位有效数字 . *x n

若 具有 位有效数字,n*x

定理 1

ma ,01 为整数 .

则其相对误差限为

Page 32: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

32

由 (2.1)′可得

,10)1( 1ma

当 有 位有效数字时 *x n

*

**

x

xxr

反之,由

*** rxxx

,105.0 1 nm

证明

*101 xa m

m

nm

a 10

105.0

1

1

;102

1 1

1

n

a

1

11 10

)1(2

110)1(

nm

aa

Page 33: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

33

知 至少有 位有效数字 . *x n

定理说明,有效位数越多,相对误差限越小 .

Page 34: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

34

由于 ,4.420 知 ,41 a 故只要取 ,4n

3* 10125.0 r

即只要对 的近似值取 4 位有效数字,其相对误差限就小于 0.1%.

20

此时由开方表得 .472.420

要使 的近似值的相对误差限小于 0.1%,需取 20

设取 位有效数字,n

.102

1 )1(

1

* nr a

例 3

几位有效数字 ?

由定理 1

就有

%,1.010 3

Page 35: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

35

1.2.3 数值运算的误差估计

两个近似数 与 ,其误差限分别为 及 ,*1x *

2x )( *1x )( *

2x

);()()( *2

*1

*2

*1 xxxx

);()()( *1

*2

*2

*1

*2

*1 xxxxxx

).0()()(

)/( *22*

2

*1

*2

*2

*1*

2*1

x

x

xxxxxx

它们进行加、减、乘、除运算得到的误差限分别为

Page 36: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

36

设 是一元函数, 的近似值为 ,以 近似 ,其误差界记作 ,

)(xf x *x *)(xf

)(xf *))(( xf

一般情况下,当自变量有误差时函数值也产生误差,

,之间介于 *,

,*)(2

)(*)*)((*)()( 2

xx

xxf

xxxfxfxf

取绝对值得

*).(2

)(*)(*)(*)()( 2 x

fxxfxfxf

其误差限可利用函数的泰勒展开式进行估计 .

利用泰勒展开

Page 37: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

37

假定 与 的比值不太大,可忽略 *)(xf *)(xf *)(x

*).(*)(*))(( xxfxf

当 为多元函数,如计算 时 . f ),( 1 nxxfA

的近似值为 ,nxx ,,1 **1 ,, nxx 则 的近似值为A

),,(* **1 nxxfA

于是由泰勒展开,函数值 的误差 为*A *)(Ae

的高阶项,于是可得计算函数的误差限

如果

Page 38: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

38

AAAe **)(

于是误差限

;)(*)(1

*

*

n

kk

k

xx

fA ( 2.3)

n

kkk

k

n xxx

xxf

1

***

1 )(),,(

,1

*

*

n

kk

k

ex

f

),,(),,( 1**

1 nn xxfxxf

Page 39: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

39

而 的相对误差限为 *A

*)(* Arr .*

)(

1

**

n

k

k

k A

x

x

f ( 2.4)

*

*)(

A

A

Page 40: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

40

已测得某场地长 的值为 ,l m110* l 宽 的值为d

,m80* d 已知 . m1.0*,m2.0* ddll

试求面积 的绝对误差限与相对误差限 .lds

因 ,,, ld

sd

l

slds

),()(*)( **

**

dd

sl

l

ss

;)(*)(1

*

*

n

kk

k

xx

fA

例 4

解 由 (2.3)

Page 41: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

41

其中

,m80**

dl

s

而 ,m2.0*)( l

于是绝对误差限

);m(27)1.0(110)2.0(80*)( 2s

相对误差限

*

*)(*)(

s

ssr

m,110**

ld

s

,m1.0*)( d

**

*)(

dl

s %.31.0

8800

27

Page 42: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

42

1.3 误差定性分析与避免误差危害

一个工程或科学计算问题往往要运算千万次,由于每步运算都有误差,如果每步都做误差分析是不可能的,也不科学 .

因为误差积累有正有负,绝对值有大有小,都按最坏情况估计误差限得到的结果比实际误差大得多,这种保守的误差估计不反映实际误差积累 .

Page 43: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

43

考虑到误差分布的随机性,有人用概率统计方法,将数据和运算中的舍入误差视为适合某种分布的随机变量,

20世纪 60年代以后对舍入误差分析提出了一些新方法,较重要的有 Wilkinson的向后误差分析法( backward error analysis)和 Moore的区间分析法 (interval analysis)两种,但都不是十分有效 .

然后确定计算结果的误差分布,这样得到的误差估计更接近实际,这种方法称为概率分析法 .

为确保数值计算机的准确性,通常只对舍入误差进行定性分析 .

Page 44: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

44

1.3.1 算法的数值稳定性

用一个算法进行计算,如果初始数据误差在计算中传播使计算结果的误差增长很快,这个算法就是数值不稳定的 .

计算 并估计误差 . ),1,0(1

0

1 ndxexeI xnn

由分部积分可得计算 的递推公式 nI

),,2,1(1 1 nnII nn

若计算出 ,0I 代入( 3.2),可逐次求出 的值 .,, 21 II

( 3.1).1 11

0

10

edxeeI x

例 5

Page 45: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

45

而要算出 就要先计算 .0I 1e

,!

)1(

!2

)1()1(1

21

ke

k

并取 ,7k 则得 ,3679.01 e

3679.017 eR

计算过程中小数点后第 5 位的数字按四舍五入原则舍入 .

若用泰勒多项式展开部分和

用 4 位小数计算, 截断误差

!8

1 .10

4

1 4

Page 46: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

46

当初值取为 时,用( 3.1)递推的计算公式为

00

~6321.0 II

).,2,1(~

1~

;6321.0~

)A(1

0

nInI

I

nn

计算结果见表 1-1的 列 . nI~

用 近似 产生的误差 就是初值误差, 0

~I 0I 000

~IIE

它对后面计算结果是有影响的 .

Page 47: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

47

0.06847.55290.17080.17044

0.10350.728080.20730.20743

0.11210.216070.26430.26422

0.12680.112060.36790.36791

0.14550.148050.63210.63210

)计算(B)(用*I)计算(A)(用In)计算(B)(用*I)计算(A)(用In

11表

nnnn

~~

Page 48: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

48

从表中看到 出现负值,8

~I 这与一切 相矛盾 .0nI

1

010

11

min1

dxxeen

e nx

x

因此,当 较大时,用 近似 显然是不正确的 . n nI~

nI

1

010

1 max dxxee nx

x

( 3.2)

.1

1

n

实际上,由积分估值得

nI

Page 49: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

49

计算公式与每步计算都是正确的,计算结果错误的原因

主要就是初值 有误差 ,由此引起以后各步

计算的误差 满足关系

0

~I 000

~IIE

nnn IIE~

).,2,1(1 nnEE nn

容易推得

,!)1( 0EnE nn

这说明 有误差 ,则 就是 的 倍误差 . 0

~I 0E nI

~0E !n

Page 50: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

50

例如, ,8n 若 ,40 10

2

1 E

2!8 08 EE

这就说明 完全不能近似 了 . 它表明计算公式( A ) 8

~I 8I

若换一种计算方案 . 由( 3.3)取 ,9n

,10

1

10 9

1

Ie

9

1

9 0684.01010

1

2

1I

eI

是数值不稳定的 .

Page 51: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

51

将公式 (3.2)倒过来算,即由 算出 ,公式为*9I *

1*7

*8 ,,, III

);1,,8,9()1(1

,0684.0)B( **

1

*9

nIn

I

I

nn

计算结果见表 1-1的 列 . *nI

可以看出 与 的误差不超过 . *0I 0I 410

Page 52: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

52

反之,当用方案( A )计算时,尽管初值 相当准确, 0

~I

此例说明,数值不稳定的算法是不能使用的 .

比 缩小了*0E *

nE则 ,**0 !

1nE

nE 记 ,**

nnn IIE

倍,因此,尽管 较大,但由于误差逐步缩小,故可用 !n *9E

近似 .*nI nI

由于误差传播是逐步扩大的,因而计算结果不可靠 .

Page 53: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

53

一个算法如果输入数据有误差,而在计算过程中舍入误差不增长,则称此算法是数值稳定的,否则称此算法为不稳定的 .

在例 5 中算法( B )是数值稳定的,而算法( A )是不稳定的 .

定义 3

【实验 1.1 】用 Matlab 编程,实现算法( A )和算法( B ),计算例 5 中的定积分,观察两种算法的数值稳定性 .

Page 54: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

54

1.3.2 病态问题与条件数

对一个数值问题本身 , 如果输入数据有微小扰动(即误差),引起输出数据(即问题解)相对误差很大,这就是病态问题 .

【例】计算函数值 .)(xf 若 有扰动 ,其x *xxx

相对误差为 ,x

x函数值 的相对误差为*)(xf

)(

*)()(

xf

xfxf

Page 55: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

55

相对误差比值

)(

)('

)(*)()(

:xf

xxf

xx

xfxfxf

C p

称为计算函数值问题的条件数 (conditional number).

如果条件数很大,自变量较小的相对误差会引起函数值很大的相对误差,出现这种情况的问题就是病态问题 .

Page 56: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

56

例如, ,nxxf )(

它表示相对误差可能放大 倍 . n

如 ,10n 有 ,24.1)02.1(,1)1( ff

,02.1* x 自变量相对误差为 ,%2 函数值相对误差为 ,%24

一般情况下 , 条件数 就认为是病态, 越大病态越严重 .

10pC pC

则有

)(

)(

xf

xfxC p

,

1

nx

nxxn

n

,1x若取

这时问题可以认为是病态的 .

Page 57: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

57

【例】解线性方程组 .

如果输入数据(方程组系数)有微小误差引起解的巨大误差,就认为是病态方程组,第 5 章将用矩阵的条件数来分析这种现象 .

0

1

21

21

xax

axx例如,当 a ≠0时,方程组

有解.

1,

1

12221 a

ax

ax

当 a ≈ 1时,若输入数据 a 程有微小扰动(误差),则解的误差很大 .

Page 58: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

58

【例】解线性方程组 .

.0

,1

21

21

xax

axx

当 a ≠1时,方程组有解 .1

,1

12221 a

ax

ax

当 a ≈ 1时,若输入数据 a 程有微小扰动(误差),则解的误差很大 . 如,当 a =0.99时, .25.501 x

若 a 有 0.001的扰动,即取 a =0.991时,则解 .81.55*1 x

( 3.4 )

56.51*

1 xx误差 很大,这说明方程组( 3.4 )是病态的 .

事实上,函数 的条件数21 1

1)(

aax

.1

2

)(

)('2

1

a

a

ax

aaxC p

若 a =0.99,则 .100pC

Page 59: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

59

1.3.3 避免误差危害的若干原则 数值计算中首先要分清问题是否病态和算法是否数值稳定,计算时还应尽量避免误差危害,防止有效数字的损失,有下面若干原则 .

1. 要避免除数绝对值远远小于被除数绝对值的除法

用绝对值小的数作除数舍入误差会增大,如计算 y

x

若 ,则可能对计算结果带来严重影响,应

尽量避免 .

xy 0

Page 60: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

60

线性方程组

.22

,100001.0

21

21

xx

xx

的准确解为

,50000125.0399999

2000001 x

在四位浮点十进制数(仿机器实际计算)下用消去法求解,

例 6

.999995.0199999

1999982 x

上述方程写成

Page 61: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

61

.2000.0101000.0102000.010

,1000.0101000.0101000.0101

21

11

12

11

4

xx

xx

若用 除第一方程减第二方程,则出现)1000.010(2

1 4

.2000.0102000.010

,1000.0101000.0101000.0106

26

12

11

4

x

xx

由此解出 ,11000.010,0 1

21 xx

显然严重失真 .

小数除大数, 这时方程组为

Page 62: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

62

若反过来用第二个方程消去第一个方程中含 的项, 1x

.2000.0101000.0102000.010

,1000.0101000.0101

21

11

62

6

xx

x

由此求得相当好的近似解 .1000.010,5000.0 121 xx

则避免了大数被小数除,得到

Page 63: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

63

2. 要避免两相近数相减

在数值计算中两相近数相减有效数字会严重损失 .

例如, 都具有五位有效数字,52.532,65.532 yx

但 只有两位有效数字 .13.0 yx

解决办法:改变计算方法,防止这种现象产生 .

Page 64: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

64

求 的小正根 . 01162 xx

,6381 x

只有一位有效数字 . *2x

6382 x

则具有 3 位有效数字 .

若改用

例 7

由求根公式

6382 x ,06.094.78 *2x

0627.094.15

1

638

1

Page 65: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

65

例 8 计算 (用四位数学用表) .)2cos1(107 A

由于 ,9994.02cos

)2cos1(107 A

只有一位有效数字 .

2sin2cos1 2 x

x

)2cos1(107 A

具有三位有效数字(这里 ) .0175.01sin

若利用

.106)9994.01(10 37

372 1013.610)1(sin2

直接计算

Page 66: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

66

此例说明,可通过改变计算公式避免或减少有效数字的损失 .

类似地,如果 和 很接近时,由 1x 2x

.lglglg2

121 x

xxx

用右边算式有效数字就不损失 .

,1

11

xxxx

也应该用右端算式代替左端 .

当 很大时,x

Page 67: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

67

一般情况,当 时,可用泰勒展开 *)()( xfxf

2*)(2

*)(*)*)((*)()( xx

xfxxxfxfxf

取右端的有限项近似左端 .

如果无法改变算式,则采用增加有效位数进行运算;

在计算机上则采用双倍字长运算,但这要增加机器计算时间和多占内存单元 .

Page 68: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

68

3. 要防止大数“吃掉”小数

在数值运算中参加运算的数有时数量级相差很大,

例 9

,524921000

1

i

iA

其中 . 9.01.0 i

而计算机位数有限,如不注意运算次序就可能出现大数“吃掉”小数的现象,影响计算结果的可靠性 .

在五位十进制计算机上,计算

Page 69: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

69

把运算的数写成规格化形式

.1052492.01000

1

5

i

iA

由于在计算机内计算时要对阶,若取 ,9.0i

对阶时 ,在五位的计算机中表示为5100000090 .i

555 10000009.010000009.01052492.0 A

结果显然不可靠,这是由于运算中出现了大数 52492 “吃掉”小数 造成的 . i

,)(1052492.0 5 表示机器中相等Δ符号

机器 0 ,因此

Page 70: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

70

,109.0101.0 31000

1

3 i

i

于是

A 55 1052492.010001.0

如果计算时先把数量级相同的一千个 相加,最后再加 52492,就不会出现大数“吃”小数现象,

i

,1052492.010009.0 55

.5339252592 A

这时

Page 71: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

71

4. 注意简化计算步骤,减少运算次数

同样一个计算问题,如果能减少运算次数,不但可节省计算机的计算时间,还能减少舍入误差 .

Page 72: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

72

例 10

011

1)( axaxaxaxP nn

nnn

的值,若直接计算 再逐项相加,一共需做kk xa

2

)1(12)1(

nnnn

次乘法和 n 次加法 .

若采用秦九韶算法

.)(

),0,1,2,,1(

,

0

1

SxP

nkaxSS

aS

n

kkk

nn

( 3.4)

计算多项式

只要 n 次乘法和 n 次加法就可算出 Pn (x) 的值 .

Page 73: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

73

(3) 松弛技术 .

(1) 以直代曲技术 . (线性化 )

1.4 算法设计的常用技术

(2) 迭代技术 .

Page 74: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

74

1.4.1 以直代曲技术 . (线性化 )

【例】已知可导函数 在 的值,求 .

)(xf0x )( 0 hxf

.)()()( 000 hxfxfhxf 解:

Page 75: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

75

1.4.2 迭代技术

【例】解非线性方程 .)(xx

),( , ),( ),( 11201 nn xxxxxx

解:从某个初值猜测值 出发,构造迭代序列:

0x

逐次逼近方程的解 .

例如:对 a>0, 求 a 的平方根等价于解方程 x2-a = 0,

解方程 x=(x+a/x)/2 .

,1,0,(2

1 1

n

x

axx

nnn

从某个初值 x0 出发,构造迭代序列:

Page 76: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

76

【例 12】用迭代法( 4.4)求 .3

732051.1,732051.1 ,73214.1 ,75.1 4321 xxxx

解:取初值猜测值 ,若要求精确到10-6 ,由( 4.4 )得迭代序列:

20 x

迭代终止 . 注意到 ,可知,只要迭代 3 次误差即小于.10

2

1 6

7320508.13

【实验 1.2 】编写程序实现算法( 4.4 ),并计算 , 相邻两次迭代的差不超过 时终止迭代 .

5610

2

1

Page 77: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

77

1.4.3 松弛技术( relaxation )

【例】求积分 ..d)( xxfb

a

.2

,)()(2)(4

,)()(2

2

1

bacbfcfaf

abT

bfafab

T

解:用梯形公式得:

.)1()( 121221 TTTTTS

引入松弛因子 进行加权平均得:

取 得著名的 Simpson公式:3

1

.)()(4)(63

1

3

4 12 bfcfaf

abTTS

Page 78: 数 值 分析 游 雄 youx@njau 南京农业大学理学院 2010 年 9 月 -2011 年 1 月

78

常用数学软件:

(3) Matlab (Matrix Laboratory):最流行的科学与工程计算软件 .

(1) Fortran: 经典的科学计算工具 .

1.5 数学软件

(4) Maple:擅长符号计算 .

(5) SAS, SPSS: 最流行的统计分析软件 .

(2) Mathematica: 擅长符号计算 .

(6) Lindo,Lingo: 常用的优化计算工具 .