如何在向量上积分作为R中的输入?
我有以下练习要解决:如何在向量上积分作为R中的输入?,r,R,我有以下练习要解决: Distribution <- function(f,a,b) ... > f <- function(x) 0.5*sin(x)*(x>=0)*(x<=pi) > F <- Distribution (f,0,pi) > F(c(-100,0,1,2,pi,100)) [1] 0.0000000 0.0000000 0.2298488 0.7080734 1.0000000 1.0000000 非常感谢。您可以在函数定义
Distribution <- function(f,a,b) ...
> f <- function(x) 0.5*sin(x)*(x>=0)*(x<=pi)
> F <- Distribution (f,0,pi)
> F(c(-100,0,1,2,pi,100))
[1] 0.0000000 0.0000000 0.2298488 0.7080734 1.0000000 1.0000000
非常感谢。您可以在函数定义周围放置矢量化参数(代码未经测试):
分布b)0
else积分(f,下限=a,上限=x)$value)
)
Distribution <- function(f, a, b){
function(x){
if(x < a || x > b)
{
0
}
else{
Vectorize(integrate(function(x) f(x), lower = a, upper = x)$value)
}
}
}
f <- function(x) 0.5*sin(x)*(x>=0)*(x<=pi)
F <- Distribution(f,0,pi)
> F(c(-100,0,1,2,pi,100))
[1] 0.0000000 0.0000000 0.2298488 0.7080734 1.0000000 1.0000000
Distribution <- function(f, a, b)
Vectorize(function(x)
if(x < a || x > b) 0
else integrate(f, lower = a, upper = x)$value)
)