这两个结果不应该是一样的吗?为什么他们不是?
integrate(\(x) {x * min(-x+10, 10)},lower = 0, upper = 10)$value
> [1] 1.085709
integrate(\(x) {x * (-x+10)},lower = 0, upper = 10)$value
> [1] 166.6667
请记住,从 x 值 0 到 10,我们永远不应该期望得到高于 10 的 y = -x + 10 值,因此 min(-x+10, 10) 将始终返回 (-x+ 10) 只要我们在 0 和 10 之间。所以这两个积分应该是相同的。
为什么不呢?
问题是
min
仅返回一个值,它没有矢量化。
f <- \(x) {x * min(-x+10, 10)}
g <- \(x) {x * (-x + 10)}
f <- Vectorize(f, "x")
g <- Vectorize(g, "x")
# curve(f, from = 0, to = 10)
# # this overplots perfectly
# curve(g, from = 0, to = 10, add = TRUE, col = "red")
integrate(f, lower = 0, upper = 10)$value
#> [1] 166.6667
integrate(g, lower = 0, upper = 10)$value
#> [1] 166.6667
创建于 2023-08-21,使用 reprex v2.0.2