Sorunlara neden olan çok küçük olan bazı olasılıklarla çalışmaya çalışıyorum. ÖrneğinÇok küçük sayılarla Aritmetik R
probs <- c(4.225867e-03,3.463125e-04,2.480971e-05,1.660538e-06,1.074064e-07,6.829168e-09,4.305051e-10,2.702241e-11,1.692533e-12,1.058970e-13,6.622117e-15,4.139935e-16,2.587807e-17,1.617488e-18,1.010964e-19,6.318630e-21,3.949177e-22 2.468246e-23,1.542657e-24,9.641616e-26,6.026013e-27,3.766259e-28,2.353912e-29,1.471195e-30,9.194971e-32
Ancak bu vektör ile aritmetik 12. değerine bakın (.Machine $ double.eps azdır muhtemelen çünkü) sıfıra yuvarlamak sonra her şeyi neden olur. Örneğin:
probs > 0
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
ama
1-probs < 1
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Ben gmp paketini kullanarak denedim ama büyük güçlere kaldırdığında gerçekten yavaş olur combinatoric bazlı hesaplamalar ve as.bigq (probs) yapıyorum.
Bunu aşmanın herhangi bir yolu var mı?
Bu tür sorunların üstesinden gelmek için, günlük olasılıkları ile çalışmak yaygındır, böylece olasılıkları çoğaltma yerine (genellikle küçük olasılıkların sebebi olan) toplayabilirsiniz. – Marius
@Marius Şaşırtıcı bir şekilde, bu bir yinelenen gibi görünmüyor (belki doğru aramadım). Sayısal doğruluğu geliştirmek için R'de log olasılıklarının kullanımı hakkında kanonik bir cevaba sahip olmak güzel olurdu. Belki de yorumunuzu genişletebilir ve cevap verebilirsin. –
@JohnColeman Her dil için ayrı ayrı belirtilecek log-olasılık stratejisine gerçekten ihtiyacımız var mı? Diğer dillerde benzer soruları gördüğümü biliyorum. –