R中的积分函数

R中的积分函数,r,function,numerical-methods,integral,numerical-integration,R,Function,Numerical Methods,Integral,Numerical Integration,我在R中定义了以下函数 (其中,a是一个给定的常数,是一个已知的函数)但是当我试图计算它的值时,我得到了一些非常奇怪的数字 我应该指出,为了计算f(s),我实际上已经用解析法解出了积分,因此,实际上,我在R中的用户定义函数不必计算该积分。我想通过将我的值与数值求解积分时得到的值进行比较,看看我的R代码是否出错(因为我很确定我正确地求解了积分)。我已经阅读了integrate的文档,但它似乎没有满足我的需要:我说的对吗?谁能给我指出正确的方向吗 这应该有效: # Function f=funct

我在R中定义了以下函数

(其中,
a
是一个给定的常数,是一个已知的函数)但是当我试图计算它的值时,我得到了一些非常奇怪的数字

我应该指出,为了计算
f(s)
,我实际上已经用解析法解出了积分,因此,实际上,我在R中的用户定义函数不必计算该积分。我想通过将我的值与数值求解积分时得到的值进行比较,看看我的R代码是否出错(因为我很确定我正确地求解了积分)。我已经阅读了
integrate
的文档,但它似乎没有满足我的需要:我说的对吗?谁能给我指出正确的方向吗

这应该有效:

# Function
f=function(s,a,lambda){
   1-exp(-integrate(lambda,lower=a,upper=s,rel.tol=1e-5)$value)   
}

# Check
f(s=1,a=0,lambda=function(t) t)
1-exp(-1/2)
一些重要警告:

1)
integrate
需要使用向量化函数,您需要调整
lambda
函数以满足此约束(例如,使用
lambda.vect=function(t)sapply(t,function(tt)lambda(tt))
)。回想一下这里发生的事情:

f(s=1:2,a=0,lambda=function(t) 1) # Use rep(1,length(t)) instead
2) 如果函数$\lambda$过于摇摆,则可能需要适当地调整参数
subdivisions
abs.tol
,请参阅文档


3)
f
不是一个向量化函数,因此无论您是否将向量传递给
s
,它都将返回一个值。要将其矢量化,请调整1)上的解决方案。

因此,
integrate
是我要寻找的。。。我确实阅读了文档,但我的印象是,我必须要做某种缩进函数才能使它工作。谢谢你的反馈!是的,由于您没有发布代码,实际上问题并不那么清楚,因此不清楚您是否尝试了
integrate
。无论如何,希望这段代码能够完成这项工作;)