我在这个问题中学到了calculating double integrals in R quickly如何进行双积分。
我的问题是当函数还有一个参数时。 请参阅示例。
z = 2
fun0 = function(x,y) { tan(x+y)*z }
fun01 = integrate(function(y) {
sapply(y, function(y) {
integrate(function(x) fun0(x,y), -.5, y)$value
})
}, 0, .5)$value
结果如下。
> fun01
[1] 0.1447771
我想把这个'fun01'变成z的函数。
答案 0 :(得分:2)
这个怎么样
fun0 = function(x,y,z) { tan(x+y)*z }
fun01 <- function(z) {
integrate(function(y) {
sapply(y, function(y) {
integrate(function(x) fun0(x,y,z), -.5, y)$value
})
}, 0, .5)$value
}
fun01(2)
只需将z
移出全球环境,然后根据需要将其传递给您。
答案 1 :(得分:0)
发布此问题后,我想我找到了答案。
fun0 = function(x,y,z) { tan(x+y)*z }
fun01 = function(z) {
integrate(function(y,z) {
sapply(y, function(y) {
integrate(function(x,z) fun0(x,y,z), -.5, y, z=z)$value
})
}, 0, .5, z=z )$value
}
它的工作原理如下。
> fun01(2)
[1] 0.1447771
> fun01(3)
[1] 0.2171656