【问题标题】:R equivalent to scipy.integrate.simps()?R 相当于 scipy.integrate.simps()?
【发布时间】:2019-08-11 04:48:55
【问题描述】:

我希望对一个函数进行一些数值积分,其中我只有来自该函数的样本,并且无法生成任意新样本。我知道在 python 世界中,这可以通过 scipy.integrate.simps() 来实现,但我的工作流程目前在 R 中。关于 R 函数/包的任何建议来实现这一点?

【问题讨论】:

    标签: python r scipy numerical-methods integral


    【解决方案1】:

    假设您有一个 x 值向量和一个 y 值向量,您可以相当轻松地应用辛普森规则。

    simpson <- function(x, y)
    {
        if(length(x) < 5)
            stop("Must have at least 5 values")
        if(length(x) %% 2 == 0)
            stop("Number of values must be odd")
        ord <- order(x)
        x <- x[ord]
        y <- y[ord]
        diffs <- diff(x)
        delta <- mean(diffs)
        if((max(diffs) - min(diffs))/delta > 1e-6)
            stop("X-values must be equally spaced")
        coefs <- c(1, 4, rep(c(2, 4), (length(x) - 3)/2), 1)
        sum(coefs*y)*delta/3
    }
    
    simpson(1:7, (1:7)^2
    # [1] 114
    

    【讨论】:

      猜你喜欢
      • 2011-06-25
      • 1970-01-01
      • 2018-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-31
      • 2017-09-10
      • 2016-03-19
      相关资源
      最近更新 更多