楼主: konggouqian
1958 10

[程序分享] 关于R语言中一个计算问题,小白求助大神们帮忙 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

高中生

60%

还不是VIP/贵宾

-

威望
0
论坛币
29 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
185 点
帖子
8
精华
0
在线时间
52 小时
注册时间
2019-12-12
最后登录
2021-9-21

楼主
konggouqian 发表于 2021-9-9 10:48:05 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我想计算log(10^360),可是结果是Inf, 但是我直接计算360*log(10)结果就是828.9306,根本就不是无穷大呀, 这种怎么解决呀. 这是我写的函数里面会涉及到的一个计算, 所以直接手动改成360*log(10)不太现实.
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:求助大神 计算问题 R语言 Log 无穷大 R语言初学者

沙发
jianxinz 学生认证  发表于 2021-9-9 11:29:16
计算log(10^360)和计算360*log(10)是同样的么

藤椅
konggouqian 发表于 2021-9-9 20:49:32
jianxinz 发表于 2021-9-9 11:29
计算log(10^360)和计算360*log(10)是同样的么
难道不是吗

板凳
谖忧222 发表于 2021-9-9 21:10:27 来自手机
konggouqian 发表于 2021-9-9 10:48
我想计算log(10^360),可是结果是Inf, 但是我直接计算360*log(10)结果就是828.9306,根本就不是无穷大呀, 这 ...
我试的也是这样,是因为计算的顺序的问题吗?

报纸
llb_321 在职认证  发表于 2021-9-9 21:41:35
这个不是log函数的问题,而是因为R计算的最大数是1e+308,即10的308次方,超出的数都作为INF.
所以解决办法只能是修改你的函数。
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

地板
owenqi 在职认证  学生认证  发表于 2021-9-9 22:39:44
在不引入额外的包的情况下,R默认能存储的数值是双浮点精度的最大数值
2^1023 × (1 + (1 − 2^(−52))) ≈ 1.7976931348623157 × 10^308
所以10^360显然大于这个数了,实际上你试到10^309就已经会给你返回Inf了。
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

7
buaa2013 在职认证  发表于 2021-9-10 07:42:59 来自手机
konggouqian 发表于 2021-9-9 10:48
我想计算log(10^360),可是结果是Inf, 但是我直接计算360*log(10)结果就是828.9306,根本就不是无穷大呀, 这 ...
注意下你是,ln还是log

8
konggouqian 发表于 2021-9-11 18:28:37
buaa2013 发表于 2021-9-10 07:42
注意下你是,ln还是log
在R中的ln就是log吧

9
konggouqian 发表于 2021-9-11 18:33:37
owenqi 发表于 2021-9-9 22:39
在不引入额外的包的情况下,R默认能存储的数值是双浮点精度的最大数值
2^1023 × (1 + (1 − 2^(&#8 ...
想问下 有什么包可以用吗 因为这是我写的一个函数,它自己在计算过程中会有这一步, 没办法手动改. 如果有包能解决那好了.

10
owenqi 在职认证  学生认证  发表于 2021-9-11 23:37:55
能用的包很多,比如gmf, bignum, Brobdingnag等都可以。但是你说你写的函数没办法处理这个,表示怀疑,通常情况下,都是对每个数先取对数,再相加的,最大似然估计,很多情况下就是用这个方法。比如
x <- 10:20
log(prod(x))
sum(log(x))

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-7 19:14