楼主: lzb0312
6302 4

[问答] R积分出现"non-finite function value"错误 [推广有奖]

  • 0关注
  • 0粉丝

小学生

0%

还不是VIP/贵宾

-

威望
0
论坛币
12 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
92 点
帖子
4
精华
0
在线时间
0 小时
注册时间
2008-7-13
最后登录
2017-1-13

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
用R计算函数积分时,出现了“non-finite function value”的错误。
具体代码如下:

  1. TT <- c(0.5120,0.5990,0.6860,0.7300,0.8170,0.9040,0.9920,1.0790,1.1660,1.2530)

  2. C1_B <- function(T){integrate(function(tau)f(tau),lower=0.01*T,upper=0.99*T)$value}

  3. f <- function(tau) {integrate(function(tau1)sqrt(1/(tau-tau1)),lower=0.01*tau,upper=0.99*tau)$value}

  4. C <- matrix(rep(0,length(TT)*2),nrow=length(TT),ncol=2)
  5. for (j in 1:length(TT)){
  6.     T=TT[j]
  7.     C[j,] <- c(T,C1_B(T))
  8. }
复制代码
请教大家该如何解决上述代码里的问题呢?先谢谢了!
二维码

扫码加我 拉你入群

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

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

关键词:function finite value nite alue function

f <- function(tau) {integrate(function(tau1)sqrt(1/(tau-tau1)),lower=0.01*tau,upper=0.99*tau)$value}
##这条命令错了,没有规定取值范围,根号下面不能为负数,也就是说tau必须大于tau1
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
admin_kefu + 20 + 1 + 2 + 1 热心帮助其他会员

总评分: 论坛币 + 20  学术水平 + 1  热心指数 + 2  信用等级 + 1   查看全部评分

使用道具

取值可以定为c(-Inf,tau)

使用道具

板凳
lzb0312 发表于 2016-12-24 18:23:18 |只看作者 |坛友微信交流群
机械唯物主义123 发表于 2016-12-24 17:47
f
谢谢你的回复。但你的回复可能不对。
我已经设置tau1的范围在0.01*tau,0.99*tau
那么tau-tau1就在0.99*tau,0.01*tau之间,而tau>0的。

使用道具

抱歉,我没看出来,不过问题肯定出在根号上,大概是下面那样

Error in integrate(function(tau1) sqrt(1/(tau - tau1)), lower = 0.01 *  :
  non-finite function value
此外: Warning message:
In sqrt(1/(tau - tau1)) : 产生了NaNs

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 11:48