我不明白为什么下面的函数返回NaN,甚至答案不应该是NaN。我试着搜索类似的问题,但大多数是在其他编程语言中,我无法理解。
a0 = 1.5; a1 = 0.4; b1 = 0.3; g1= 0.7
nu = rep(0,1)
h.new = rep(0,1)
ddp = rep(0,1)
nu[1]=0
h.new[1] = a0/(1-a1-b1)
ddp[1] = 0.5*log(g1)- g1*h.new[1] +
nu[1]*(log(nu[1])-1) - log(factorial(nu[1]))+(g1)*nu[1]*
(1+log(h.new[1]/nu[1]))
###> ddp
###[1] NaN
###h.new = 1.5/(1-0.4-0.3) = 5
###ddp
###= 0.5*log(0.7)- (0.7)*(5) +
###(0)*(log(0)-1) - log(0!)+(0.7)*(0)*
###(1+log(5/0))
###= 0.5*log(0.7)- (0.7)*(5)
###= -3.6783
提前谢了。
通常,0*inf
在r中给出nan
:计算机不/不能知道您要如何接受限制。如果您知道希望这些限制为零,则可以指定在nu==0
的特殊情况下计算的工作方式:
term3 <- if (nu==0) 0 else nu*(log(nu)-1)
term5 <- if (nu==0) 0 else g1*nu*(1+log(h.new/nu))
ddp = 0.5*log(g1)-
g1*h.new +
term3 -
log(factorial(nu))+
term5
您可以使用zprod
函数来实现这一点:
zprod <- function(x,y) {
if (x==0) 0 else x*y
}
ddp = 0.5*log(g1)- g1*h.new +
zprod(nu,log(nu)-1) - log(factorial(nu))+
g1*zprod(nu,1+log(h.new/nu))
函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。 我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的: def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax 但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回
函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。 我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的: def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax 但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回
在rust中,任何函数都有返回类型,当函数返回时,会返回一个该类型的值。我们先来看看main函数: fn main() { //statements } 之前有说过,函数的返回值类型是在参数列表后,加上箭头和类型来指定的。不过,一般我们看到的main函数的定义并没有这么做。这是因为main函数的返回值是(),在rust中,当一个函数返回()时,可以省略。main函数的完整形式如下:
问题内容: 我在返回查询时遇到了几个问题。 在这里,我想做的是: 我在不同的帖子上看到了回调函数,但是它不适用于我想做的事情。 问题答案: 我在不同的帖子上看到了回调函数,但是它不适用于我想做的事情。 是的,您只需要更改对代码的思考方式即可。与其编写,不如编写一个名为的函数: 然后,而不是这样写: 您可以这样写: 现在,您可能会问自己,在那之后还有其他事情吗?好吧,您需要修改函数使其行为类似于和而
Lua 具有一项与众不同的特性,允许函数返回多个值。Lua 的库函数中,有一些就是返回多个值。 示例代码:使用库函数 string.find,在源字符串中查找目标字符串,若查找成功,则返回目标字符串在源字符串中的起始位置和结束位置的下标。 local s, e = string.find("hello world", "llo") print(s, e) -->output 3 5 返回多个值
我一直在做这个岩石剪刀剪刀程序一段时间,它没有显示的方式,它应该是应该的。我在代码中使用了值返回函数。问题在程序的末尾显现出来。游戏的结果将被替换,但实际显示的是另一个提示,供用户输入他们的选择。下面是我的代码: