让我来描述问题设置。我描绘的函数是一个概率函数,在积分时它的值必须等于1.所以我将积分的结果除以1得到C的值。所以我不能给C赋值
查看以下代码和错误消息 -
> f <- function(x) (C*x*(exp(-x)))
> z=integrate(f, lower = 0, upper=Inf)
Error in C * x : non-numeric argument to binary operator
我该如何定义C
?
第二个问题 - 有人可以看出z
的价值有什么问题吗?
> f <- function(x) (x*(exp(-x)))
> z=integrate(f, lower = 0, upper=Inf)
> z
1 with absolute error < 6.4e-06
> 1/z
Error in 1/z : non-numeric argument to binary operator
答案 0 :(得分:0)
在计算函数的积分时使C = 1
为。为此,您可以使用默认值将其作为函数的可选参数:
f <- function(x, C = 1) C * x * exp(-x)
然后,计算:
z <- integrate(f, lower = 0, upper = Inf)
对于1
的积分为C
,C * z == 1
的实际值,您需要C <- 1 / z$value
C
# [1] 1
,即:
z
事实证明,积分1
已经等于C = 1
,因此选择f
是一个幸运的选择。您无事可做,您可以按原样开始使用f
。如果不是这样,我建议重新定义f_final <- function(x) f(x, C = 1 / z$value)
:
?integrate
(关于第二个问题,您只需查看{{1}}的文档,然后参阅“值”部分。)