gpt4 book ai didi

r - 计算大负值的指数

转载 作者:行者123 更新时间:2023-12-05 03:15:06 25 4
gpt4 key购买 nike

我想知道如何在 R 中获得大负数的指数?例如,当我尝试时:

   > exp(-6400)
[1] 0
> exp(-1200)
[1] 0
> exp(-2000)
[1] 0

但我需要上面表达式的值,即使它很小,我如何在 R 中获取它?

最佳答案

这些数字太小了。要知道您的计算机可以处理的最小值,请尝试:

> .Machine$double.xmin
[1] 2.225074e-308

会给你(来自?.Machine)

the smallest non-zero normalized floating-point number, a power of the radix, i.e., double.base ^ double.min.exp. Normally 2.225074e-308.

以我为例

> .Machine$double.base
[1] 2
> .Machine$double.min.exp
[1] -1022

其实我可以计算到的幂

> exp(-745)

[1] 4.940656e-324

要解决此问题,您需要 infinite precision arithmetic .

在 R 中你可以使用包 Rmpfr ( PDF vignette )

library(Rmpfr)
# Calculate exp(-100)
> a <- mpfr(exp(-100), precBits=64)
# exp(-1000)
> a^10

1 'mpfr' number of precision 64 bits
[1] 5.07595889754945890823e-435
# exp(-6400)

> a^64

1 'mpfr' number of precision 64 bits
[1] 3.27578823787094497049e-2780
# use an array of powers

> ex <- c(10, 20, 50, 100, 500, 1000, 1e5)
> a ^ ex

7 'mpfr' numbers of precision 64 bits
[1] 5.07595889754945890823e-435 2.57653587296115182772e-869
[3] 3.36969414830892462745e-2172 1.13548386531474089222e-4343
[5] 1.88757769782054893243e-21715 3.56294956530952353784e-43430
[7] 1.51693678090513840149e-4342945

注意 Rmpfr 基于 GNU MPFR并需要 GNU GMP .在 Linux 下,您需要安装 gmpgmp-develmpfrmpfr-devel系统以便安装这些包,不确定它在 Windows 下如何工作。

关于r - 计算大负值的指数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21013309/

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