gpt4 book ai didi

r - R中的计算精度级别

转载 作者:行者123 更新时间:2023-11-30 23:58:19 24 4
gpt4 key购买 nike

我在 R 工作用非常小的数字反射(reflect)最大似然估计算法中的概率。其中一些数字小到 1e-155(或更小)。但是,当发生像求和这样简单的事情时,精度级别会被截断为最不精确的级别,从而破坏了我的计算精度并产生无意义的结果。

例子:

    > sum(c(7.831908e-70,6.002923e-26,6.372573e-36,5.025015e-38,5.603268e-38,1.118121e-14,  4.512098e-07,4.400717e-05,2.300423e-26,1.317602e-58))
[1] 4.445838e-05

从示例中可以看出,此计算的基数是 1e-5 ,它以一种非常粗鲁的方式将敏感计算四舍五入。

有没有解决的办法?为什么是 R选择这种奇怪的自动行为?也许它不是真的这样做,我只是看到截断形式的结果?在这种情况下,变量中是否存储了具有正确精度的实际数字?

最佳答案

您的总和没有精度损失。但是如果你担心它,你应该使用一个多精度库:

library("Rmpfr")

x <- c(7.831908e-70,6.002923e-26,6.372573e-36,5.025015e-38,5.603268e-38,1.118121e-14, 4.512098e-07,4.400717e-05,2.300423e-26,1.317602e-58)

sum(mpfr(x, 1024))

# 1 'mpfr' number of precision 1024 bits
# [1] 4.445837981118120898327314579322617633703674840117902103769961398533293289165193843930280422747754618577451267010103975610356319174778512980120125435961577770470993217990999166176083700886405875414277348471907198346293122011042229843450802884152750493740313686430454254150390625000000000000000000000000000000000e-5

关于r - R中的计算精度级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18742985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com