Floating-point number systems
Definition 4.1. 位置数字系统的基 base or radix of a positional numeral system 是表示数字的唯一记号的数量.
Definition 4.3. 位 bit 是计算机基本单位,只能有 0 和 1 两种值.
Definition 4.4. 字节 byte 是计算机信息的单位,通常包含 8 位;它是计算机储存的最小单位.
Definition 4.7 (Floating point numbers). 浮点数 floating point number (FPN) 具有形式
x=±m×βe(4.1)
其中 β 是基, e∈[L,U] ,有效数字 significand or mantissa m 具有形式
m=(d0+d1β+⋯+dp−1βp−1)(4.2)
其中整数 di 满足 ∀i∈[0,p−1], di∈[0,β−1] ; d0 和 dp−1 称为最大有效数字 most significant digit 和最小有效数字 least significant digit , m 的数字串 string of digits 是字符串 d0.d1d2⋯dp−1 ,其中 .d1d2⋯dp−1 称为 m 的小数部分 fraction .
Algorithm 4.8. 十进制整数转为二进制的方法
- 每次除以 2 ,然后记录余数,直到结果为 0 ,从后向前排列余数
97=((((((0×2+1)×2+1)×2+0)×2+0)×2+0)×2+0)×2+1=(1100001)2
十进制小数转为二进制的方法
- 每次乘 2 ,检查整数部分是否不大于 1 ,如果是就记录 1 ,否则记录 0 ,直到结果为 0 ,从前向后排列
23=((13+1)×122+1)×12=(0.1010⋯)2
写成括号嵌套的形式更为直观.
Definition 4.11 (FPN systems). 浮点数系统 floating point number system F 是有理函数 Q 的真子集,由 (β,p,L,U) 描述.
Definition 4.12. 一个 FPN 是正规的 normalized 如果它的有效数字 1≤m<β .
Definition 4.13. 非正规数 subnormal 是 FPNs 中 e=L, m∈(0,1) 的数,正规 FPN 系统可以通过包含非正规数扩张 extended .
Definition 4.14 (IEEE standard 754-2019). 当前的 IEEE 754 标准中的单精度 single precision 和双精度 double precision 浮点数有三种二进制格式和两种十进制格式;这里主要考虑 32 位比特: 1 位符号位 + 8 位指数 + 23 位有效数字,精度为 24 ,因为我们可以在正规二进制浮点系统中取 d0=1 ,然后不用存储 d0 .
Definition 4.16. 正规 FPN 系统 F 的机器精度 machine precision 是 1.0 到 F 中下一个较大的 FPN 的距离
ϵM=β1−p(4.3)
按照格式整数加小数部分一共有 p 位有效数字,最后一位为 β1−p .
Definition 4.17. 下溢极限 UFL 和上溢极限 OFL 为
UFL(F)=min|F∖{0}|=βLOFL(F)=max|F|=βU(β−β1−p)(4.4)
下溢极限是最小的非零浮点数,上溢极限则是最大的浮点数.
Corollary 4.19 (Cardinality of F ). 对于二进制正规 FPN 系统,有
#F=2p(U−L+1)+1(4.5)
Proof. 注意在二进制储存时不用存 d0 ,而是在这里存放符号,因此有 2×2p−1 种有效数字,同时有 U−L+1 种指数,再加上 0 就是所有的正规浮点数.
Definition 4.20. 正规 FPN 系统的范围 range 是 R 的子集
R(F)={x:x∈R, UFL(F)≤|x|≤OFL(F)}(4.6)
它是两段区间,分别在正半轴和负半轴;注意 F 不能取得范围内的所有实数.
Definition 4.22. 两个正规 FPNs a,b 在 F 中相邻 adjacent 当且仅当
∀c∈F∖{a,b},|a−b|<|a−c|+|b−c|(4.7)
也就是两个数之间没有其它浮点数.
Lemma 4.23. 令两个正规 FPNs a,b 在 F 中相邻,满足 |a|<|b|, ab>0 ,则
β−1ϵM|a|<|a−b|≤ϵM|a|(4.8)
Proof. 考虑 a=m×βe>0 ,则有 |a−b|=ϵMβe ,由 1.0≤m<β 有
β−1ϵM<|a−b||a|≤ϵM
即证.
Rounding error analysis
Rounding a single number
Definition 4.24 (Rounding). 舍入 Rounding 是映射 fl:R→F∪{+∞,−∞,NaN} ,默认舍入是舍入到最近 round to nearest 的浮点数;在距离相等 tie 的情况下, fl(x) 选择舍入到最后一位为偶数 round to even .
Definition 4.25. 舍入数 fl(x) 上溢 overflows 若 |x|>OFL(F) ,此时 fl(x)=NaN ;下溢 underflows 若 0<|x|<UFL(F) ,此时 fl(x)=0 ;扩张的 FPN 系统的下溢称为渐进下溢 gradual underflow .
Definition 4.26. F 的单位舍入 unit roundoff 是
ϵu=12ϵM=12β1−p(4.9)
Theorem 4.27 (Range of round-off errors). 对 x∈R(F) 有
fl(x)=x(1+δ),|δ|<ϵu(4.10)
Proof. 将浮点范围的实数舍入到 F 中,则我们考虑相邻的浮点数 xL,xR∈F, xL≤x≤xR ,相等的情况显然;否则
|fl(x)−x|≤12|xR−xL|≤ϵumin(|xL|,|xR|)<ϵu|x|
其中第一步由舍入到最近的特性得到,第二步由 Lemma 4.23 得到.
Theorem 4.28. 对 x∈R(F) 有
fl(x)=x1+δ,|δ|≤ϵu(4.11)
Proof. 类似的有
|fl(x)−x|≤12|xR−xL|≤ϵumin(|xL|,|xR|)≤ϵu|fl(x)|
注意最后一步可以取等式.
Binary floating-point operations
Definition 4.30 (Addition/subtraction of two FPNs). 对 a,b∈F, a=Ma×βea, b=Mb×βeb, Ma=±ma, Mb=±mb ,不妨设 |a|≥|b| ,在精度至少为 2p 的寄存器中计算 c=fl(a+b)∈F .
- 比较指数
- 若 ea−eb>p+1 ,相差超过范围,直接返回 c=a
- 否则 ec←ea, Mb←Mb/βea−eb ,这里对 Mb 右移即可
- 加法 Mc←Ma+Mb 并在寄存器中进行舍入,精度为 2p
- 正规化
- 若 Mc=0 ,返回 0
- 否则移位使 Mc∈[1,β)
- 检查范围
- 舍入到精度 p
- 返回 c←Mc×βec
需要注意,由于精度为 p ,舍入在第 p 位小数进行;对于加法,最多错开 p 位相加,然后舍入;对于减法,最多错开 p+1 位相减,特殊情况为
1.000×100−9.000×10−5=1.000−0.00009=0.9999100→9.999×10−1,p=4
上面错开 5 位,这是因为减法可能使得 d0=0 ,然后左移一位,因而舍入在原先的第 p+1 位小数进行.
Lemma 4.34. 对 a,b∈F, a+b∈R(F) 有
fl(a+b)=(a+b)(1+δ),|δ|<ϵu(4.12)
Proof. 倒数第二步的舍入误差占主要地位,因为第二步舍入精度为 2p ,只有在错开 p+1 位时才有误差;然后由 Theorem 4.27 即证.
Definition 4.35 (Multiplication of two FPNs). 对 a,b∈F, a=Ma×βea, b=Mb×βeb, Ma=±ma, Mb=±mb ,在精度至少为 2p 的寄存器中计算 c=fl(ab)∈F .
- 指数求和 ec←ea+eb
- 乘法 Mc←MaMb 并在寄存器中进行舍入
- 正规化:移位使 Mc∈[1,β)
- 检查范围
- 舍入到精度 p
- 返回 c←Mc×βec
两个 p 位精度的浮点数相乘得到 2p 位小数.
Lemma 4.37. 对 a,b∈F, |ab|∈R(F) 有
fl(ab)=(ab)(1+δ),|δ|<ϵu(4.13)
Proof. 只有倒数第二步的舍入误差,由 Theorem 4.27 即证.
Definition 4.38 (Division of two FPNs). 对 a,b∈F, a=Ma×βea, b=Mb×βeb, Ma=±ma, Mb=±mb ,在精度至少为 2p+1 的寄存器中计算 c=fl(a/b)∈F .
- 如果 mb=0 ,直接返回 NaN ;指数作差 ec←ea−eb
- 除法 Mc←Ma/Mb 并在寄存器中进行舍入
- 正规化:移位使 Mc∈[1,β)
- 检查范围
- 舍入到精度 p
- 返回 c←Mc×βec
Lemma 4.39. 对 a,b∈F, a/b∈R(F) 有
fl(ab)=ab(1+δ),|δ|<ϵu(4.14)
Proof. 当 |Ma|=|Mb| 时,没有误差;考虑 |Ma|>|Mb| ,则由 |Ma|,|Mb|∈[1,β) ,尽可能让商更小,有
β>β−ϵM>β−2ϵM,∣∣∣MaMb∣∣∣≥β−ϵMβ−2ϵM>1+β−1ϵM
这意味着第三步正规化不需要进行;设有 p+k 精度,则舍入单位
12β1−p−k=12β1−pβ1−pβp−1−k=ϵuϵMβp−1−k
令 k=p+1 ,则舍入单位为 ϵuϵMβ−2 ;记第二步舍入结果为 Mc1 ,倒数第二步舍入结果为 Mc2 ,从而
Mc2=Mc1+δ2,|δ2|<ϵu=MaMb+δ1+δ2,|δ1|<ϵuϵMβ−2=MaMb(1+δ)|δ|=∣∣∣δ1+δ2Ma/Mb∣∣∣<ϵu(1+ϵMβ−2)1+ϵMβ−1<ϵu
考虑 |Ma|<|Mb| ,则类似的有
∣∣∣MaMb∣∣∣≤β−2ϵMβ−ϵM=1−ϵMβ−ϵM<1−β−1ϵM
因此第三步正规化一定会进行, Mc1 需要左移一位,因此
Mc1=MaMb+δ1,|δ1|<ϵuϵMβ−2Mc2=βMc1+δ2=βMaMb(1+βδ1+δ2βMa/Mb),|δ2|<ϵu
我们考虑分母上的部分,进行缩放则有
β∣∣∣MaMb∣∣∣≥ββ−ϵM=1+ϵMβ−ϵM>1+β−1ϵM
代入得到
|δ|=∣∣∣βδ1+δ2βMa/Mb∣∣∣<ϵuϵMβ−1+ϵu1+β−1ϵM=ϵu
即证.
Theorem 4.40 (Model of machine arithmetic). 记 F 为精度 p 的正规 FPN 系统,则对任意运算 ⊙=+,−,×,/ ,我们有
∀a,b∈F, a⊙b∈R(F),fl(a⊙b)=(a⊙b)(1+δ),|δ|<ϵu(4.15)
当且仅当在 2p+1 精度的寄存器中计算.
The propagation of rounding errors
Theorem 4.41. 若 ∀i=0,1,⋯,n, ai∈F, ai>0 ,则
fl(n∑i=0ai)=(1+δn)n∑i=0ai(4.16)
其中 |δn|<(1+ϵu)n−1≈nϵu .
Theorem 4.44. 对给定的 μ∈R+ 及正整数 n≤⌊ln2μ⌋ ,设 |δi|≤μ, i=1,2,⋯,n ,则
1−nμ≤n∏i=1(1+δi)≤1+nμ+(nμ)2(4.17)
或者等价地对 In=[−11+nμ,1] 有
∃θ∈In,s.t.n∏i=1(1+δi)=1+θ(nμ+n2μ2)(4.18)
Proof. 由 |δi|≤μ, i=1,2,⋯,n 可得
(1−μ)n≤n∏i=1(1+δi)≤(1+μ)n≤enμ
我们将 f(μ)=(1−μ)n 在 μ=0 泰勒展开的拉格朗日余项有
(1−μ)n=1−nμ+12n(n−1)θ2≥1−nμ
从而左边不等式得证,而
ex=1+x+x22+x33!+⋯≤1+x+x22ex
令 x=nμ≤ln2 ,则有
enμ≤1+nμ+(nμ)2
右边不等式得证;最后,由于 ∏ni=1(1+δi) 在连续函数 f(τ)=1+τ(1+nμ)nμ, τ∈In 的值域中,由中值定理即证.
Accuracy and stability
Avoiding catastrophic cancellation
Definition 4.45. 令 ^x 为 x∈R 的逼近,则逼近精度可由绝对误差 absolute error
Eabs(^x)=|^x−x|(4.18)
或者相对误差 relative error
Erel(^x)=|^x−x||x|(4.19)
进行度量.
Definition 4.46. 对于通过 ^y=^f(x) 逼近 y=f(x) ,向前误差 forward error 是逼近 y 的相对误差,向后误差 backward error 是满足 f(^x)=^f(x) 的用 ^x 逼近 x 的相对误差的最小值.
Note. 关于向后误差,我们原本想要的是 y=f(x) ,但必须通过 ^y=^f(x) 来近似,也就是说我们计算的是 ^f(x) ,有 f(^x)=^f(x) ,即我们实际计算的是 f 在 ^x 处的值。总的来说,可以看作我们实际上是在用 f 在 ^x 处的值逼近 f 在 x 处的值,向后误差考虑的就是用于逼近的 ^x 关于实际的 x 的相对误差。
事实上,我们不需要考虑结果的误差,只要 ^x 离 x 足够近,也可以认为这种逼近是有效的。因为 f(^x)=^f(x) ,所以我们保证了用 ^f(x) 逼近 f(^x) 是完全准确的,当 ^x 离 x 足够近,f(^x) 离 f(x) 也足够近, ^f(x) 可以看做是对 f(x) 的良好逼近.
Definition 4.47 (Accuracy). 计算 y=f(x) 的算法 ^y=^f(x) 是精确的 accurate 如果它的向前误差对任意的 x 都很小
∃c>0,s.t.∀x∈dom(f), Erel(^f(x))=∣∣
∣∣^f(x)−f(x)f(x)∣∣
∣∣≤cϵu(4.20)
Note. 糟糕的消去:我们知道乘法和除法是精确的,但是加法和减法不一定是精确的;事实上,通过计算
fl(fl(x)⊙fl(y))=(1+C(x,y))(x⊙y)
对于乘法和除法 C(x,y)=C ;而对于加法和减法 C(x,y)→∞ 当 x+y→0 .
Theorem 4.49 (Loss of most significant digits). 设 x,y∈F, x>y>0 ,且
β−t≤1−yx≤β−s(4.21)
则在计算减法 x−y 时最大有效数字的位数至多丢失 t ,至少丢失 s .
Proof. 我们写成浮点格式 x=mx×βn, y=my×βm, 1≤mx,my<β ,根据减法过程,首先对较小的 y 进行移位
y=(my×βm−n)×βn⇒x−y=(mx−my×βm−n)×βn
把相减后的有效数字记为 mx−y ,则m
mx−y=mx−my×βm−n=mx(1−my×βmmx×βn)=mx(1−yx)
根据题中的不等式以及 mx 的条件有
β−t≤mx−y<β1−s
因此进行正规化时,要左移至多 t 位,至少 s 位.
Note. 当 x,y 是两个非常接近的数时,进行减法操作就会出现上面的问题,因此要尽量避免这种情况出现.
Backward stability and numerical stability
Definition 4.52 (Backward stability). 计算 y=f(x) 的算法 ^y=^f(x) 是向后稳定的 backward stable 若
∃c>0,s.t.∀x∈dom(f), ∃^x∈dom(f),s.t.^f(x)=f(^x) ⇒ Erel(^x)≤cϵu(4.20)
Definition 4.53. 计算 y=f(x1,x2) 的算法 ^y=^f(x1,x2) 是向后稳定的 backward stable 若
∃c1,c2>0,s.t.∀(x1,x2)∈dom(f), ∃(^x1,^x2)∈dom(f),s.t.^f(x1,x2)=f(^x1,^x2) ⇒ Erel(^x1)≤c1ϵu, Erel(^x2)≤c2ϵu(4.21)
也就是说对任何 x 的向后误差都足够小.
Lemma 4.54. 对 f(x1,x2)=x1−x2, x1,x2∈R(F) ,则算法 ^f(x1,x2)=fl(fl(x1)−fl(x2)) 是向后稳定的.
Proof. 直接计算
^f(x1,x2)=(x1(1+δ1)−x2(1+δ2))(1+δ3)=x1(1+δ1+δ3+δ1δ3)−x2(1+δ2+δ3+δ2δ3)
因此分别有
^x1=(1+δ1+δ3+δ1δ3)x1,^x2=(1+δ2+δ3+δ2δ3)x2
从而向后稳定.
Definition 4.56. 计算 y=f(x) 的算法 ^y=^f(x) 是稳定的 stable 或数值稳定 numerically stable 当且仅当
∃c,cf>0,s.t.∀x∈dom(f), ∃^x∈dom(f),s.t.∣∣
∣∣^f(x)−f(^x)f(^x)∣∣
∣∣≤cfϵu, Erel(^x)≤cϵu(4.22)
注意这里第一个条件是关于 f(^x) 的相对误差,第二个条件是关于 ^x 的相对误差.
Lemma 4.57. 如果一个算法向后稳定,则它是数值稳定的.
Proof. 由向后稳定,有 ^f(x)=f(^x) ,故第一个条件显然;第二个条件显然成立.
Condition numbers: scalar functions
Definition 4.59. 函数 y=f(x) 的相对条件数 condition number 是输入的微小变化对输出的相对变化的度量
Cf(x)=∣∣∣xf′(x)f(x)∣∣∣(4.23)
Definition 4.60. 条件数小的问题称为是良态的 well-conditioned 否则称为是病态的 ill-conditioned .
Lemma 4.63. 考虑在单根 r 附近求解 f(x)=0 ,即有 f(r)=0, f′(r)≠0 ,设有微小扰动 F=f+ϵg, f,g∈C2, g(r)≠0 且满足 |ϵg′(r)|≪|f′(r)| ,则 F 有根 r+h ,其中
h≈−ϵg(r)f′(r)(4.24)
Proof. 直接泰勒展开
0=F(r+h)=f(r)+hf′(r)+ϵ[g(r)+hg′(r)]+O(h2)
从而有
h≈−ϵg(r)f′(r)+ϵg′(r)≈−ϵg(r)f′(r)
即证.
Example 4.64 (Wilkinson). 定义
f(x)=p∏k=1(x−k),g(x)=xp
考虑根 x=p 受到扰动 f+ϵg 后的影响.
由上面的引理,我们有
h≈−ϵg(r)f′(r)=−ϵpp(p−1)!
当 p 很大时,扰动越来越大,因此求解高阶多项式的根几乎不可能.
Condition numbers: vector functions
Definition 4.65. 向量函数 f:Rm→Rn 的条件数为
condf(x)=∥x∥∥∇f∥∥f(x)∥(4.25)
其中 ∥⋅∥ 表示欧几里得范数.
Definition 4.68. 向量函数 f:Rm→Rn 的分量条件数 component wise condition number 为
condf(x)=∥A(x)∥(4.26)
其中矩阵 A(x)=[aij(x)] ,每一个部分为
aij(x)=∣∣
∣
∣∣xj∂fi∂xjfi(x)∣∣
∣
∣∣(4.27)
也就是说 aij 是 fi(x) 关于 xj 的条件数.
Definition 4.70. 希尔伯特矩阵 Hilbert matrix Hn∈Rn×n 是
hi,j=1i+j−1(4.28)
Definition 4.72. 范德蒙德矩阵 Vandermonde matrix Vn∈Rn×n 是
vi,j=ti−1j(4.29)
其中 t1,⋯,tn 是参数.
Condition numbers: algorithms
Definition 4.74. 向量函数 f:Rm→Rn 通过算法 fA:Fm→Fn 逼近,设
∀x∈Fm, ∃xA∈Rm,s.t.fA(x)=f(xA)(4.30)
则算法 fA 的条件数定义为
condA(x)=1ϵuinf{xA}∥xA−x∥∥x∥(4.31)
也就是向后误差的下确界.
Theorem 4.76. 设光滑函数 f:R→R 由算法 A:F→F, fA(x)=f(x)(1+δ(x)), |δ(x)|≤φ(x)ϵu 逼近,若 condf(x) 有界非零,则有
∀x∈F,condA(x)≤φ(x)condf(x)(4.32)
Proof. 设有 xA 满足 f(xA)=fA(x) ,将 xA 写作 x(1+ϵA) ,则
f(x)(1+δ)=f(xA)=f(x(1+ϵA))=f(x)+xϵAf′(x)+O(ϵ2A) ⇒ ϵA=f(x)xf′(x)δ
计算相对误差
∣∣∣xA−xx∣∣∣=|ϵA|=∣∣∣f(x)xf′(x)∣∣∣|δ(x)| ⇒ 1ϵu∣∣∣xA−xx∣∣∣=∣∣∣δ(x)ϵucondf(x)∣∣∣≤φ(x)condf(x)
对 xA 取下确界, x 取上确界即证.
Overall error of a computer solution
Theorem 4.79. 考虑正规 FPN 求解数学问题
f:Rm→Rn,y=f(x)(4.33)
将计算机的输入输出表示为
x∗≈x,y∗A=fA(x∗)(4.34)
其中 fA 是逼近 f 的算法,则逼近 y 与 y∗ 的相对误差有界
Erel(y∗A)⪅Erel(x∗A)condf(x)+ϵucondf(x∗)condA(x∗)(4.35)
Proof. 证明省略.
Problem
III. 令 x=βe, e∈Z, L<e<U 为正规 FPN ,而 xL,xR 为两个相邻的正规 FPN 满足 xL<x<xR ,则 xR−x=β(x−xL) .
Proof. 由 x=1×βe ,则有 xR=(1+1×β1−p)×βe ,从而 xR−x=β1−p×βe=βe+1−p ,而
xL=(β−1)×(1+β−1+β−2+⋯+β1−p)×βe−1
从而有
x−xL=(β−(β−1)×(1+β−1+β−2+⋯+β1−p))×βe−1=(β−(β−1)×1−β−p1−β−1)×βe−1=(β−(1−β−p)×β)×βe−1=βe−p
故 xR−x=β(x−xL) .
IV. 在 IEEE 754 单精度下进行舍入.
35=(1.00110011⋯)2×2−1xL=(1.0011⋯001)2×2−1xR=(1.0011⋯010)2×2−1
且有
x−xL=35×2−24xR−xL=2−24xR−x=(xR−xL)−(x−xL)=25×2−24
故 fl(x)=xR=(1.0011⋯010)2×2−1 ,
∣∣∣xR−xx∣∣∣=23×2−24
注意舍入精度为 24 ,即保留到小数点后 23 位.
V. 如果 IEEE 754 单精度不再舍入到最近,而是直接截断,求单位舍入.
机器精度 ϵM=2−23 ,由于直接截断,则舍入的最大相对误差
ϵu=max∣∣∣fl(x)−xx∣∣∣<max∣∣∣2−23x∣∣∣=2−23
从而 ϵu=2−23 .
VI. 在计算 1−cos14 的精度损失.
根据定理 Theorem 4.49 我们计算
1−yx=1−cos141=1−cos14
有范围
0.015625=2−6<1−cos14<2−5=0.03125
故精度损失 6 位.
VII. 两种避免 1−cosx 的精度损失的方法.
1−cosx=1−(1−x22+x44!−x66!⋯)=x22−x44!+x66!−⋯
1−cosx=1−cos2x1+cosx=sin2x1+cosx
用多个乘除法替代.
IX. 算法 A 估计 f(x)=1−e−x ,其中指数函数的相对误差为机器精度,对 [0,1] 估计 condA(x) .
利用估计
∀x∈F,condA(x)≤φ(x)condf(x)
不妨假设估计为 fA(x) ,在计算时忽略 δiδi ,则有
fA(x)=(1−e−x(1+δ1))(1+δ2)=1+δ2−e−x(1+δ1+δ2+δ1δ2)≈f(x)(1+δ2−e−x(δ1+δ2)1−e−x)=f(x)(1+δ(x))
考虑 |δ(x)|<ϵuφ(x) ,从而有
φ(x)=1−2e−x1−e−x,condf(x)=∣∣∣xf′(x)f(x)∣∣∣=xex−1
其中 condf(x) 有界非零,代入估计式
condA(x)≤ex−2x
从而在 x=0 附近算法条件数趋于无穷.
X. 寻找多项式的根
q(x)=n∑i=0aixi,an=1, a0≠0, ai∈R
可以考虑向量函数 f:Rn→C
r=f(a0,a1,⋯,an−1)
推导 f 基于 1 范数的分量条件数.
令 a=(a0,a1,⋯,an−1)T ,根据 q(x) 得到的函数 f 为
f(a)=n∑i=0aixi
条件矩阵 A(a) 是 1×n 矩阵
A(a)=1|f(a)|(|a0|,|a1x|,⋯,∣∣an−1xn−1∣∣)
从而有
condf(a)=1|f(a)|∥∥(|a0|,|a1x|,⋯,∣∣an−1xn−1∣∣)∥∥1=max(|a0|,|a1x|,⋯,∣∣an−1xn−1∣∣)∣∣∑ni=0aixi∣∣
对于 Wilkinson 情况,
f(x)=p∏k=1(x−k)=xp+p−1∑i=0bixi,g(x)=xp
则求 f+ϵg 的根等价于
f+ϵg=xp+p−1∑i=0bixi+ϵxp=0 ⇔ xp+p−1∑i=0cixi=0, ci=bi1+ϵ
也就是说,求解 f+ϵg 的根实际上相当于对 f 的系数做出相对扰动
|ci−bi||bi|=ϵ1+ϵ
得到的首一多项式求根,应用之前首一多项式系数的条件数公式,它在 x=p 附近条件数趋于无穷,因此系数受到的扰动很大,它的根受到的扰动也很大.
XII. 在 IEEE 754 单精度 FPN 中,对区间 [128,129] 应用二分法,则绝对精度能否 <10−6 ?
要满足 |x−x∗|<10−6 ,但有整数部分 128=27 ,而
2−20<1×10−6<2−19
从而整数部分 8 位,小数部分 19 位,正规化后需要至少 27 位,因此不能达到要求.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下