对 min() 函数进行积分会得到与内部函数不同的结果

问题描述 投票:0回答:1

这两个结果不应该是一样的吗?为什么他们不是?

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 之间。所以这两个积分应该是相同的。

为什么不呢?

r integration min integral integrate
1个回答
1
投票

问题是

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

© www.soinside.com 2019 - 2024. All rights reserved.