Відняти максимальний логарифм з усіх журналів. Викиньте всі настільки негативні результати, що вони переповнюють показник. (Їх вірогідність для всіх практичних цілей дорівнює нулю.)
Дійсно, якщо ви хочете відносної точності (наприклад, для цифр точності) і маєте ймовірностей, киньте будь-який результат менший, ніж логарифм . Потім продовжуйте, як зазвичай, експоненцію отриманих значень і діліть кожне на суму всіх експонентів.ϵ = 10 - d d n ϵ / nϵϵ = 10- дгнϵ / н
Для тих, хто любить формули, нехай логарифми будуть з . Для логарифмів до бази визначтеλ1, λ2, … , Λнb > 1λн= max ( λi)b > 1
αi= { bλi- λн, λi- λн≥ журнал( ϵ ) - журнал( n )0інакше .
Нормалізовані ймовірності рівні , Це працює, тому що заміна всіх інакше перетікаючих нулем робить загальну помилку максимум тоді як, тому що і всі невід'ємні, знаменник , звідки загальна відносна похибка внаслідок правила заміни нуля суворо менша, ніж , за бажанням. i = 1 , 2 , … , n . α i ( n - 1 ) ϵ / n < ϵαi/ ∑нj = 1αji = 1 , 2 , … , n .αi( n - 1 ) ϵ / n < ϵα i A = ∑ j α j ≥ 1αн= bλн- λн= b0= 1αiA = ∑jαj≥ 1( ( n - 1 ) ϵ / n ) / A < ϵ
Щоб уникнути занадто великої помилки округлення, обчисліть суму, починаючи з найменших значень . Це буде зроблено автоматично, коли вперше відсортовано у порядку зростання. Це врахування лише для дуже великих .λ i nαiλiн
До речі, цей припис припускає, що основа журналу більша за . Для підстав менше, ніж , спочатку занеміть усі колоди і продовжуйте так, ніби підстава дорівнює .b 1 1 / b1б11 / б
Приклад
Нехай є три значення з логарифмами (натуральні журнали, скажімо), рівними та Остання - найбільша; віднімання його від кожного значення дає і- 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. ехр ( - 0,282 ) = 0,754 ехр ( 0 ) = 1 0 0,430 1 / ( 1 + 0,754 )ϵ =10- 16n = 3- 0,282журнал( ϵ / n )журнал( 10- 16) - журнал( 3 )−37.93997.−38202.733,−0.2820.exp(−0.282)=0.754 і (звичайно). Нормовані значення - для того, щоб для того, що ви викинули, , і .exp(0)=100.754/(1+0.754)=0.4301/(1+0.754)=0.570
log1p