3

让我描述一下问题设置。我描述的函数是一个概率函数,积分后它的值必须等于 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这里定义?


第二个问题-有人可以弄清楚 value 有什么问题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
4

1 回答 1

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并参考“价值”部分。)

于 2013-10-27T03:39:14.240 回答