第二章数值计算的基本概念
问题提出 考虑一个积分序列 En
1
x e
n
x 1
dx
(2.4.1)
0
显然 E n 0, n 1, 2,。当 n 1 时,经分部积分得到
E1
对 n 2 ,经分部积分可得
En
1
xe
x 1
dx
1 e
0
1
x e
n
x 1
dx x e
n
x 1
1 0
0
nx e
*
际上精确值 x 往往是未知的,所以常常把 对误差。
x x x
*
*
作为 x 的相
*
定义 2 设 x 是某实数的精确值, x 是它的一个近似值, 若 x 的绝对误差满足 x x ,则称 是 x 的绝对误差界,
* * * * *
*
简称误差界。称 r
*
* *
为 x 的相对误差界。
*
实验内容 和式(2.3.1)共有 n !项,按行列式的定义计算一个 n 阶 行列式需要乘法次数为
( n 1)n !
现有的较大规模的计算机(10 次/秒浮点运算)及将要面世的 万亿次机(及浮点运算 10 列式?
12
9
次/秒) ,问它们分别能算多大规模的行
实验要求 核算一下如果按行列式定义计算行列式,计算机的 能力有多大,再使用 Matlab 软件尝试计算行列式,能计算多大的 行列式?
T2 h
2
3!
f ( x0 ) O ( h )
3
比较两种算法,后者比前者好。
注意: 在实际计算中, 并不是所有计算都是 h越小越好, 如图 P25,2.3 图。
§2.2 计算机算术的若干问题
2.2.1 误差与有效数字
*
定义 1 设 x 是某实数的精确值, x 是它的一个近似值, x x * * * 则 e x x 称为近似值 x 的绝对误差, 简称误差。 称 x * 为 x 的相对误差。注意当 x 0 时,相对误差没有意义。实
第二章 数值计算的基本概念
2.1 浮点数与舍入误差 2.2 计算机算术的若干问题
2.3 计算方法及其计算复杂性
2.4 算法的稳定性 2.5 问题的病态性
数值计算的基本概念
构造算法的基本手段:近似。
研究算法的核心问题:近似对计算结果的影响。
计算地球表面公式:
A 4 r
2
包含了许多近似。
A 模型:地球被看成一个球,这是简单的理想模型,与 实际情况差别很大。
计算结果的精度要求影响不大。
• 要防止大数吃掉小数 。
• 要避免两相近数相减。
• 要避免除数绝对值远小于被除数绝对值 。
• 注意简化计算步骤,减少运算次数 。
§2.3 计算方法及其计算复杂性
实验 2.4 (从行列式的计算看算法的重要性)
实验目的: 通过实验体会使用计算机进行数值计算中算法的 重要地位。
实验分析 计算机的速度虽然很快,但硬件处理能力还是很有 限。只有算法适当才能发挥其效率。 解线性方程组 AX B 的 Cramer 法则 Dx xi | A| 并不适合于数值计算,如果方程组的阶数很高,甚至于无法计算。
§2.4 算法的稳定性
实验 2.5 (误差传播与算法稳定性)
实验目的: 体会算法的稳定性在选择算法中的地位。
Matlab 中数的范围 2 体数称为浮点数。
1022
x2
1023
,这一区间的全
舍入误差:实数中的绝大部分在计算机上总不能精确 表出,总要经过“舍”或“入” ,由一个与之相近的浮点 数代替,由此引起的误差称为舍入误差,这也是误差的主 要来源。
实验 2.1
(数值微分精度及步长的关系)
实验目的:数值计算中的误差是不可避免的,通过实 验初步认识数值分析中的两个重要概念:截断误差和舍入 误差,并认真体会误差对计算结果的影响。
实验分析:不论采用怎样的算法,计算结果通常总是 有误差,如对算法(2.1.1),由泰勒 有
f ( x0 h) f ( x0 ) hf ( x0 ) h
2
2!
f ( x0 ) O ( h )
3
所以有
f ( x0 h) f ( x 0 ) h f ( x 0 ) h 2! f ( x0 ) O ( h )
2
(2.1.3)
(2.1.1)中用上式左端近似 f ( x0 ) ,误差总数存在,但 步长越小时,(2.1.1)的近似程度越好.(2.1.3)中的
T1 h 2! f ( x0 ) O ( h )
2
(2.1.4)
称为算法(2.1.1)的截断误差。它来源于有限差分替代了 无限的过程。
类似地:可以分析(2.1.2)的截断误差,其结果为
* * * *
x2
x2
*
2
2.2.5 函数的误差估计
x1 , x2 , , xn 为 x1 , x2 , , xn 的 近 似 值 , 则 函 数
A f ( x1 , x2 , , x n ) 的 近 似 值 A f ( x1 , x2 , , xn ) 的 误 差 界
* * * * * * *
其中, 2
t
。
2.2.4 数值运算的误差估计
( x1 x2 ) ( x1 ) ( x2 )
*
*
*
*
*
( x1 x2 ) x1 ( x2 ) x2 ( x1 )
* * * * *
(
x1
* *
)
x1 ( x2 ) x2 ( x1 )
1 En n
算法二: E N 0 , E n1
, n N , N 1, , 3, 2,1
实验要求 分别由以上两种算法,采用 5、6、7 位有效数字, 判断哪一种算法的计算结果更精确。
实验分析 实际和直觉完全相反! 算法一: E1 的初始误差为 e1 ,第 n 步以后为 en n ! e1 。 算法二: E N 的初始误差为 N ,第 m 步以后为 m N /( N !/ m !)
问题提出 设有矩阵 A ( aij )nn ,其行列式
det( A)
( i1 , i2 ,, in )
( 1) ai ai ai
1 2
(2.3.1)
n
其中 代表正整数1, 2, , n 排列的全体构成的集合 (该集合共有 n !个 元素) 为正整数,由 i1 , i2 , , in 的次序决定。 ,
k 1
n
f * ( xk ) x k
*
*
相对误差界为:
r r(A )
* *
(A )
*
A
*
k 1
n
* f ( x k ) * x k A
2.2.6 数值运算中的一些原则
•
要有数值稳定性 : 在计算过程中误差不会扩大或对
实验内容 Matlab 的两个函数“roots”和“poly”. u=roots(a),a 为(n+1)维向量,则该函数的输出一个 n 维向量。 设
*
*
k n
*
则称 x 为 x 的具有 n 位有效数字的近似值, x 具有 n 位 且 有效数字。
有效数字的位数: 如果近似值 x 的误差界 是某一位上的半个单位,则若
*
该位到 x 的第一位非零数字共有 n 位,称 x 具有 n 位有效数 字。
*
*
相对误差界: 若用式子
x 10 0.a1a2a3 an
|x |
定义 3 设 x 是 x 的一个近似值,写成:
*
x 10 0.a1a2a3 an
* k
它可以是有限或无限小数的形式。其中 ai( i 1, 2 , n ) 是 0,1, , 9 中的数字,且 a1 0 ,k 为整数。如果 x 满足条件:
*
x x 0.5 10
问题提出:设一元函数 f 为
f ( x0 ) lim
h 0
: R R ,则 f
在 x0 的导数定义
f ( x0 h) f ( x 0 ) h
。
实验内容:计算在 x0 的导数值可以用算法
f ( x 0 ) f ( x0 h) f ( x 0 ) h
(2.1.1)
或
f ( x 0 ) f ( x0 h) f ( x 0 h) 2h
k 1
(2.5.1)
显然,该多项式全部的根为1, 2, , 20 ,共 20 个,且每一个根都是 单重。现考虑多项式的一个扰动
P( x) x
19
0 (2.5.2)
19
其中, 为很小的正数,相当于(2.5.1)的 x 项系数有一个小扰动。 比较(1.5.1)和(2.5.2)根的情况。
B 测量仪器的误差:地球半径要经过测量得到,无论使 用什么手段,其误差是无法避免的。
C 截断误差:公式中的 是物理数,在计算机中无法精 确表示,只能将它截断到有限字长。
D 舍入误差:输入的数据和公式的计算都被舍入。
§2.1 浮点数与舍入误差
计算机中的数二进制表示,使用 IEEE 国际通用标 准。进行数值计算,并不需要时刻关注这这样的细节,但 了解其特殊性,对建立数值计算的基本概念十分重要。
* k
表示的近似数 x 具有 n 为有效数字,则其相对误差界满足:
*
r
*
* *
1 2a1
10
( n 1)
x
2.2.2 计算机的浮点数表示