作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
让我描述一下问题设置。我描述的函数是一个概率函数,在积分时它的值必须等于 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
最佳答案
当您计算函数的积分时,使 C = 1
。为此,您可以使用默认值将其作为函数的可选参数:
f <- function(x, C = 1) C * x * exp(-x)
然后,计算:
z <- integrate(f, lower = 0, upper = Inf)
要使 1
的积分为 C
的 real 值,您需要 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
的文档并引用“值”部分。)
关于r - 如何在 R 中定义常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19613777/
我是一名优秀的程序员,十分优秀!