R中的积分函数

时间:2014-10-12 01:02:03

标签: r function numerical-methods integral numerical-integration

我在R

中定义了以下函数

enter image description here

(其中a是一个给定的常量,enter image description here是一个已知的函数)但是当我尝试计算它的值时,我会得到一些非常奇怪的数字。

我应该指出,为了计算f(s)的值,我实际上已经在分析前解决了积分,因此,实际上,我在R中的用户定义函数不必计算那个积分。我想看看我的R代码是否犯了错误(因为我非常确定我正确地解决了积分),将我的值与我得到的值进行比较如果我要用数字求解积分。我已经阅读了integrate的文档,但它似乎没有做我需要的:我是否正确?任何人都能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:4)

这应该有效:

# 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 $过于摇晃,那么您可能需要适当地调整参数subdivisionsabs.tol,请参阅文档。

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