数值分析第二章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这时,
0.1× 10 ≤ ∑ δi ≤ 0.9 × 103
3 i=1 1000
0.001× 105 + 0.52492 × 105 ≤ A ≤ 0.009 × 105 + 0.52492 × 105
52592 ≤ A ≤ 53392
误差分析的原则-IV
4. 注意简化计算步骤,减少运算次数
(减少运算次数,不但可以节省计算机的计算时间,还能 减少舍入误差)
*
f ′′ ( ξ ) * 2 ( x − x ) , ξ ∈ ( x, x * ) 2
取绝对值得
f ( x) − f ( x
*
) = f ′( x ) ε ( x ) +
* *
f ′′ ( ξ ) 2
ε 2 ( x* )
忽略 ε ( x* ) 的高阶项可得计算函数的误差限
ε f ( x* ) ≈ f ′ ( x* ) ε ( x* )
若直接计算 ak x k 再逐项相加,一共需做
n + ( n − 1) +
+ 2 +1 =
n ( n + 1) 次乘法和 n 次加法。 2
⎧ S n = an ⎪ 若采用 ⎨ S k = xSk +1 + ak ⎪P ( x ) = S 0 ⎩ n
( k = n − 1,
, 2,1, 0 )
秦九韶算法
⇓
⎧10−4 ⋅ 0.1000 x1 + 101 ⋅ 0.1000 x2 = 101 ⋅ 0.1000 ⎨ 一个方程减第二个方程 ⎩106 ⋅ 0.2000 x2 = 106 ⋅ 0.2000
用 (10−4 ⋅ 0.1000 ) 2 除第
⇓
严重失真!
x1 = 0, x2 = 101 ⋅ 0.1000 = 1
* , xn ) − f ( x1 , x2 ,
, xn )
*
* n , xn ) ⎞ * ⎛ ∂f ⎞ * ⎟ ( xk − xk ) = ∑ ⎜ ⎟ ek ⎟ k =1 ⎝ ∂xk ⎠ ⎠
于是误差限
⎛ ∂f ⎞ * ε ( A* ) ≈ ∑ ⎜ ⎟ ε ( xk ) k =1 ⎝ ∂xk ⎠
n
*
≈
27 = 0.31% 8800
相对误差限
计算机中数的表示
现在我们假定提供给计算机的数 x 只是有限位小数。这样,数 x 可以表示成
x = ±10
J
∑ d 10
k =1 k
t
−k
其中 J 是整数, d1 , d 2 ,
t
, dt 都是 0,1, 2,
,9 中的一个数字。
若记 a = ∑ d k 10− k = 0.d1d 2
1 − cos x = 2sin 2 x 2
比如计算 A = 107 (1 − cos 2° ) ,这里取 cos 2° = 0.9994 。
误差分析的原则-II
例:求方程 ax 2 + bx + c = 0, a ≠ 0 的两个根 x1 , x2 的公式是
−b + b 2 − 4ac −b − b 2 − 4ac 和 x2 = x1 = 2a 2a
误差分析的原则-I
现在四位浮点十进制数下用消去法求解,
⎧0.00001x1 + x2 = 1 ⎧10−4 ⋅ 0.1000 x1 + 101 ⋅ 0.1000 x2 = 101 ⋅ 0.1000 ⇒⎨ 1 ⎨ 2 x1 + x2 = 2 10 ⋅ 0.2000 x1 + 101 ⋅ 0.1000 x2 = 101 ⋅ 0.2000 ⎩ ⎩
则只要 n 次乘法和 n 次加法就可算出 Pn ( x ) 的值。
插值法 Interpolation
⇓
用 106 ⋅ 0.2000 除第二 个方程减第一个方程
⎧101 ⋅ 0.1000 x2 = 101 ⋅ 0.1000 ⎨ 1 10 ⋅ 0.2000 x1 + 101 ⋅ 0.1000 x2 = 101 ⋅ 0.2000 ⎩
⇓
很好的近似解!
x1 = 0.5000, x2 = 101 ⋅ 0.1000 = 1
k =1
dt ,则 x = ± a × 10 J (基数 p )
计算机的字长,表 示数x的尾数的位数
一般地,一个 p 进制数 x 可以表示成
x = ±p
t
J
dk p −k ∑
k =1
t
或
x = ±a × p J
数x的阶,用 来确定该数的 小数点的位置
我们称 a = ∑ d k p − k = 0.d1d 2
若 b > 0 且 b2
4ac ≥ 0 ,计算 x1 会产生相减相消。
x1 = −2c b + b 2 − 4ac
注:如果无法改变算式,则采用增加有效位数进行运算;在计算机 上可采用双倍字长运算,但这要增加机器计算时间并且占用更多的 内存单元。
误差分析的原则-III
3. 要防止大数“吃掉”小数
(在数值运算中参加运算的数数量级相差很大时,可能 会影响计算结果的可靠性)
, an + ε n )
然后利用 εi 的界,由摄动理论估计最后舍入误差 x − x fl 的界。
(perturbation theory)
误差分析的方法
区间分析法
(Interval Analysis Method)
把参加运算的数, x, y, z ,
都看成区间量 X , Y , Z ,
,
根据区间运算规则求得最后结果的近似值及误差限。
误差分析的原则
在本课中对各种计算过程都只研究它的稳定性,而不具体估计舍 入误差。因此,在这里只提出数值运算中应注意的若干原则,据 此减小舍入误差的影响。
要避免除数绝对值远远小于被除数绝对值的除法 要避免两相近数相减 要防止大数“吃掉”小数 注意简化计算步骤,减少运算次数 要有数值稳定性,即能控制舍入误差的传播
例 : 在 五 位 十 进 制 计 算 机 上 计 算 A = 52492 + ∑ δi , 其 中
i =1 1000
0.1 ≤ δi ≤ 0.9 。
首先,把运算的数写成规格化形式 A = 0.52492 ×10 + ∑ δi 。
5 i =1 1000
由 于 在 计 算 机 内 计 算 时 要 对 阶 , 若 取 δi = 0.9 , 对 阶 时
(
)
数值运算的误差估计
当 f 为多元函数时,如 A = f ( x1 , x2 ,
* * 似值为 x1 , x2 , * , xn ,则
, xn ) ,设 x1 , x2 ,
, xn 的近
* * e ( A* ) = A* − A = f ( x1 , x2 , * * ⎛ ∂f ( x1 , x2 , ≈ ∑⎜ ∂xk k =1 ⎜ ⎝ n
而 A* 的相对误差限为
ε* = ε r ( A* ) = r
ε ( A* ) A*
* ⎛ ∂f ⎞ ε ( xk ) ≈∑⎜ ⎟ A* k =1 ⎝ ∂xk ⎠ n *
数值运算的误差估计
例:已测得某场地长 l 的值为 l * = 110m ,宽 d 的值为 d * = 80m , 已知 l − l * ≤ 0.2m , d − d * ≤ 0.1m 。试求面积 S = ld 的绝对误差限 与相对误差限。
例如, x, y 的近似值为 α, β ,误差限为 δα, δβ ,即
或者
x − α ≤ δα , y − β ≤ δβ
x ∈ [ α − δα, α + δα ] = X , y ∈ [β − δβ, β + δβ] = Y
z = x ∗ y → Z = X * Y = [ z , z ] = [ z − δz , z + δz ]
∵ ∴
∂S ∂S S = ld , = d, =l ∂l ∂d ε ( S * ) ≈ d * ε ( l * ) + l *ε ( d * ) = 80 × 0.2 + 110 × 0.1 = 27 ( m 2 ) εr ( S * ) = ε (S* ) S
*
绝对误差限
=
ε (S* ) ld
* *
k =1
dt 为数 x 的尾数(其值小于 1)
计算机中数的表示
x = ±p
◆ 如果阶 J
J
dk p−k ∑
k =1
t
或
x = ±a × p J
是一个固定不变的常数,我们称上式为定点表示。
此时通常取 J = 0 或 J = t 。
◆ 如果阶 J
是可以变化的,我们称上式为浮点表示。
一个数可以有不同的浮点表示,为避免发生这种情形,我们将 浮点规格化,规定在浮点表示中尾数的第一位数字 d1 非零。这 种浮点表示的数,称为规格化浮点数。
x1 = 0.50000125, x2 = 0.999995
误差分析的原则-I
现在四位浮点十进制数下用消去法求解,
⎧0.00001x1 + x2 = 1 ⎧10−4 ⋅ 0.1000 x1 + 101 ⋅ 0.1000 x2 = 101 ⋅ 0.1000 ⇒⎨ 1 ⎨ 2 x1 + x2 = 2 10 ⋅ 0.2000 x1 + 101 ⋅ 0.1000 x2 = 101 ⋅ 0.2000 ⎩ ⎩
数值计算中的 误差分析初步
数值运算的误差估计 误差分析的方法 误差分析的原则
数值运算的误差估计
* * * * 两个近似数 x1 与 x2 ,其误差限分别为 ε ( x1 ) 及 ε ( x2 ) ,它们进行加、
减、乘、除运算得到的误差限分别为
* * * * ε ( x1 ± x2 ) = ε ( x1 ) + ε ( x2 ) * * * * * * ε ( x1 ⋅ x2 ) ≈ x1 ε ( x2 ) + x2 ε ( x1 ) * * * * x1 ε ( x2 ) + x2 ε ( x1 )
* * ε ( x1 x2 ) ≈
x
* 2 2
(x
* 2
Fra Baidu bibliotek
≠ 0)
数值运算的误差估计
更一般的情况是,当自变量有误差时计算函数值也产生误差,其 误差限可利用函数的 Taylor 展式进行估计。
设 f ( x ) 是一元函数, x 的近似值为 x* ,则
f ( x ) − f ( x ) = f ′ ( x* )( x − x* ) +
x = 0.21062 ×10−5 , y = 0.12345 × 10−3 ,则 x ⊕ y = ?
浮点数运算加
误差分析的方法
向前误差分析法
(Forward Error Analysis)
直接估计计算结果与真确结果之间的误差,称为向前误差分析。
真确值:x = g ( a1 , a2 ,
, an )
对于十进制规格化浮点数: 0.1 ≤ a < 1
计算机中数的表示
采用浮点表示的数,进行两数相加(或相减)时,首先要对阶, 即把两数的小数点对齐,使它们的阶相等。
对阶的方法 把阶数小的数尾数右移,每移一位其阶就加“1”直 到两数的阶相等。
例:假设所使用的计算机是采用舍入的方法, t = 5, p = 10 。若
δi = 0.000009 × 105 ,在五位的计算机中表示为计器 0。
A = 0.52492 × 105 + 0.000009 × 105 + 0.52492 ×105
+ 0.000009 × 105
误差分析的原则-III
如果计算时先把数量级相同的一千个 δi 相加,最后再加 52492, 就不会出现大数“吃掉”小数的现象。
x1 = 0.50000125, x2 = 0.999995
误差分析的原则-II
2. 要避免两相近数相减
(在数值计算中相近的两数相减有效数字会严重损失)
例:计算表达式 1 − cos x ,当 x 相减相消。
两个几乎相等的同号数相减时精度的损失称为相减相消
0 时,直接进行计算会导致
然而我们可以利用恒等式
误差分析的原则-I
1. 要避免除数绝对值远远小于被除数绝对值的除法
(用绝对值小的数作除数舍入误差会增大)
⎧0.00001x1 + x2 = 1 例:求解线性方程组 ⎨ 。 ⎩2 x1 + x2 = 2
其准确解为
x1 = x2 =
200000 = 0.50000125 399999 199998 = 0.999995 199999
例 1:计算 x 255 的值。
如果逐个相乘要用 254 次乘法,但若写成
x 255 = x ⋅ x 2 ⋅ x 4 ⋅ x8 ⋅ x16 ⋅ x 32 ⋅ x 64 ⋅ x128
只要做 14 次乘法运算即可。
误差分析的原则-IV
例 2:计算多项式
Pn ( x ) = an x n + an −1 x n −1 + + a1 x + a0
x 计算结果: fl
x − x fl
向后误差分析法
(Backward Error Analysis)
将计算过程的误差归结为初始误差的误差,称为向后误差分析。
若对每个 ai 引入某个摄动量 εi ,使得
J.H. Wilkinson (1960) 数值代数,矩阵计算
x fl = g ( a1 + ε1 , a2 + ε 2 ,