sinh() returning inf in R



如果我做sinh(1000),我得到Inf,这似乎是预期的,但我很想知道是否有任何方法来克服这一点?

我试过:format(round(sinh(1000), 2), nsmall = 2)相信这是一个十进制的问题,但也许我的问题是概念性的,而不是技术?

我只是发现很奇怪,sinh(700)工作得很好,但在足够接近这个

的数字上失败了

请看答案。R中的numeric对象只能变这么大。对于较大的x,其逆sinh近似为log(x) + log(2):

> .Machine$double.xmax
[1] 1.797693e+308
> sinh(log(.Machine$double.xmax) + log(2))
[1] 1.797693e+308
> sinh(log(.Machine$double.xmax) + log(2) + 1e-10)
[1] Inf

一种常见的方法是在对数空间中工作。log(sinh(x))对于大x近似于x - log(2):

> log(sinh(700))
[1] 699.3069
> 700 - log(2)
[1] 699.3069
> log(sinh(700)) - 700 + log(2)
[1] 5.495604e-14

如果你澄清你试图做什么大于sinh(700)的数字,有人可能有额外的想法来解决你的问题。

相关内容

  • 没有找到相关文章

最新更新