如何在R中定义常量

时间:2013-10-27 01:39:11

标签: r constants

让我来描述问题设置。我描绘的函数是一个概率函数,在积分时它的值必须等于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

1 个答案:

答案 0 :(得分:0)

在计算函数的积分时使C = 1为。为此,您可以使用默认值将其作为函数的可选参数:

f <- function(x, C = 1) C * x * exp(-x)

然后,计算:

z <- integrate(f, lower = 0, upper = Inf)

对于1的积分为CC * 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}}的文档,然后参阅“值”部分。)