2014-10-12 102 views
2

我已中的R所定义的以下函数积分函数

enter image description here

(其中a是给定的恒定和enter image description here是公知的功能),但是当我尝试以计算它我得到的值一些相当奇怪的数字。

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

+0

发布您的代码。 – 2014-10-12 01:32:12

回答

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)如果函数$ \ $拉姆达过波浪,那么你可能需要调整的参数subdivisionsabs.tol appropiately,请参阅文档。

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

+0

所以'集成'**是**我正在寻找...我没有阅读文档,但我的印象是,我将不得不做一些缩进功能,使其工作。感谢您的反馈! – 2014-10-12 01:45:34

+0

是的,实际上问题并不清楚,因为您没有发布代码,所以您是否尝试过或不“集成”还不清楚。无论如何,这段代码希望应该做的工作;) – epsilone 2014-10-12 01:50:57

+0

@epsilone,你能帮我解决我的问题:(http://stackoverflow.com/questions/42095957/coding-a-multiple-integral-function-在-R) – rnorouzian 2017-02-07 17:57:43