从所有日志中减去最大对数。丢弃所有负数的结果,它们将使指数下溢。(实际上,它们的可能性为零。)
事实上,如果要的相对精度ϵ(如ϵ = 10- d为d的精度位数)和你有ñ似然性,扔掉任何结果小于对数ϵ / n。然后像往常一样继续对结果值取幂,然后将每个值除以所有指数的和。
λ1个,λ2, … ,λñb > 1λñ= 最大(λ一世)b > 1
α一世= { bλ一世- λñ,λ一世- λñ≥对数(ϵ ) - 对数(n )0否则。
归一化的可能性等于, 之所以,是因为将所有其他下溢的替换为零会导致总错误最多为而因为并且所有均为非负数,分母,因此归零替换规则导致的总相对误差严格小于,视需要而定。我= 1 ,2 ,... ,Ñ 。α 我(ñ - 1 )ε / Ñ < ε α Ñ = b λ ñ - λ Ñ = b 0 = 1 α 我甲= Σ Ĵ α Ĵ ≥ 1 ((ñ - 1α一世/ ∑ñj = 1αĴ我= 1 ,2 ,... ,Ñ 。α一世(n − 1 )ϵ / n < ϵαñ= bλñ- λñ= b0= 1α一世A = ∑ĴαĴ≥ 1((n − 1 )ϵ / n )/ A < ϵ
为避免舍入误差太大,请从的最小值开始计算总和。当第一次按升序排序时,这将自动完成。仅考虑非常大的。λ 我 Ñα一世λ一世ñ
顺便说一句,该规定假设原木的底数大于。对于小于的底数,首先求反所有对数,然后继续进行,就好像底数等于。b 1 1 / b1个b1个1 / b
例
设三个具有对数(例如,自然对数)的值等于和 最后一个是最大的。从每个值中减去它得出和- 231444.981 ,- 231444.699。- 38202.733 ,- 0.282 ,0。− 269647.432 , − 231444.981 ,− 231444.699。− 38202.733 , − 0.282 ,0。
假设您想要的精度可与IEEE双精度(约16个十进制数字)相比,因此和。(您实际上无法达到此精度,因为仅分配给三个有效数字,但这没关系:我们只是丢弃那些保证不会影响您想要的精度和实际精度更好的值计算。 = = 第一次的三点区别,低于这一点,所以把它扔掉,只留下和 幂他们给 n = 3 − 0.282 log (ϵ / n )log (10 − 16)− log (3 )− 37.93997。- 38202.733 ,- 0.282 0 EXP (- 0.282 )= 0.754 EXP (0 )= 1 0 0.754 /(1 + 0.754 )=ϵ = 10− 16n = 3− 0.282日志(ϵ / n )日志(10− 16)- 日志(3 )− 37.93997。− 38202.733 ,− 0.2820。经验值(- 0.282 )= 0.754和(当然)。的归一化值是-在order--你扔掉了一个,,和。经验值(0 )= 100.754 /(1 + 0.754 )= 0.4301 /(1 + 0.754 )= 0.570
log1p