Tüm loglardan maksimum logaritmayı çıkarın. O kadar negatif olan tüm sonuçları atın ki bunlar üstelden aşağı akacak. (Olasılıkları, tüm pratik amaçlar için sıfırdır.)
Aslında, göreceli hassasiyetini istiyorsanız ε(örneğin, d basamak haneleri için gibi ) ve n olasılıklarınız varsa, ϵ / n logaritmasından daha az bir sonuç atarsınız . Ardından ortaya çıkan değerleri üstelleştirmek ve her birini üstellerin toplamına bölmek için her zamanki gibi devam edin.ϵ = 10- ddnϵ / n
Formüller gibi, logaritma olalım olanlar için ile Âλ1, λ2, … , Λn . B > 1 tabanına logaritmalar içintanımlayın.λn= maks ( λben)b > 1
αben= { bλben- λn, λben- λn≥ log( ϵ ) - günlük( n )0Aksi .
Normalleştirilmiş olasılıklar , i = 1 , 2 , … , n'ye eşittir . Aksi underflowing tüm değiştirilmesi Bu çalışmalar için α i sıfır ile en toplam hata yapar ( n - 1 ) ε / n < £ değerinin ise, çünkü α n bir = Σ j α j ≥ 1αben/ ∑nj = 1αji = 1 , 2 , … , n .αben( n - 1 ) ϵ / n < ϵ ve tümü α i negatif değildir,, sıfır değiştirme kuralı nedeniyletoplamgörecelihata kesinlikledeğerinden daha küçüktür., istediğiniz gibi.αn= bλn- λn= b0= 1αbenA = ∑jαj≥ 1( ( n - 1 ) ϵ / n ) / A < ϵ
Çok fazla yuvarlama hatasından kaçınmak için, en küçük değerleriyle başlayan toplamı hesaplayın . Bu, λ i önce artan düzende sıralandığında otomatik olarak yapılacaktır . Bu yalnızca çok büyük bir husustur n .αbenλbenn
BTW, bu reçete günlüklerinin taban büyüktür varsayılır . Bazlar için b az taban eşit sanki ve birinci negate tüm günlükleri devam .1b1 / b11 / b
Örnek
Logaritma ile üç değer olmasına izin verin (doğal loglar, diyelim) - 231444.981- 269647.432 , ve - 231.444,699. Sonuncusu en büyüğüdür; Her değer çıkarılmadan verir - 38202.733 , - 0.282 , ve 0.−231444.981,−231444.699.−38202.733, −0.282,0.
Eğer, IEEE çift (16 hakkında ondalık hane) ile karşılaştırılabilir hassasiyet istiyoruz varsayalım böylece ve ve n = 3 olur . (Bu hassasiyeti gerçekten başaramazsınız, çünkü - 0.282 yalnızca üç önemli rakama verilir, ancak sorun değil: biz sadece istediğiniz hassasiyeti ve gerçekte hassasiyetinizi daha iyi etkilememesi garanti edilen değerleri atarız. var.) Hesaplama günlüğü ( ϵ / n ) = log ( 10 - 16 ) - log ( 3 ) = -ϵ=10−16n=3−0.282log(ϵ/n)log(10−16)−log(3) , üç farklılıkların ilk - 38202,733 , az bundan daha, bu nedenle sadece bırakarak at gitsin - 0.282−37.93997.−38202.733,−0.282 Bunları üstelleştirmek , exp ( - 0.282 ) = 0.754 ve exp ( 0 ) = 1 (elbette) verir. Normalleştirilmiş değerler - sırayla--0.exp(−0.282)=0.754exp( 0 ) =1 uzağa attı biri için, 0.754 / ( 1 + 0.754 ) = 0.430 ve 1 / ( 1 +00.754 / ( 1 + 0.754 ) = 0.430 .1 / ( 1 + 0,754 ) = 0,570
log1p
işlevi kendi dilinizde mi kullandınız ? Bu, Taylor'ın 1 civarında genişlemesini kullanır.