R эквивалентно scipy.integrate.simps ()? - PullRequest
1 голос
/ 20 марта 2019

Я собираюсь выполнить некоторую числовую интеграцию для функции, где у меня есть только сэмплы из функции, и я не могу генерировать произвольные новые сэмплы. Я понимаю, что во вселенной Python это может быть достигнуто с помощью scipy.integrate.simps (), но мой рабочий процесс в настоящее время находится в R. Какие-либо предложения по функциям / пакетам R для этого?

1 Ответ

1 голос
/ 20 марта 2019

Если у вас есть вектор значений 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...