【问题标题】:Integral Function in R [closed]R中的积分函数
【发布时间】:2014-12-06 21:16:45
【问题描述】:

我在R中定义了如下函数

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

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

【问题讨论】:

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


    【解决方案1】:

    这应该可行:

    # 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) 上调整解决方案。

    【讨论】:

    • 所以integrate 我正在寻找的...我确实阅读了文档,但我的印象是我必须做一些缩进函数使其工作。感谢您的反馈!
    • 是的,实际上问题不是很清楚,因为你没有发布代码,所以不清楚你是否尝试过integrate。无论如何,那段代码有望完成工作;)
    猜你喜欢
    • 2020-07-15
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 2015-12-16
    • 2018-01-17
    相关资源
    最近更新 更多