如何整合两个功能的产品

时间:2018-06-13 02:25:37

标签: r calculus

假设我正在寻求将以下函数从0到10集成:

enter image description here

我如何在R中完成此操作?

功能

# Functional form
fn <- function(t) -100*(t)^2 + 20000

# First derivative w.r.t. t
fn_dt <- function(t) -200*t

# Density funciton phi
phi <- approxfun(density(rnorm(35, 15, 7)))

# Delta t
delta <- 5

1 个答案:

答案 0 :(得分:2)

以下内容如何:

  1. 首先,我们选择固定种子进行再现。

    # Density funciton phi
    set.seed(2017);
    phi <- approxfun(density(rnorm(35, 15, 7)))
    
  2. 我们定义了被积函数。

    integrand <- function(x) {
        f1 <- -500 * x^2 + 100000;
        f2 <- phi(x);
        f2[is.na(f2)] <- 0;
        return(f1 * f2)
    }
    

    默认情况下,如果approxfun超出NA区间,则x会返回[min(x), max(x)];由于phi基于正态分布的密度,因此我们可以将NA替换为0

  3. 让我们绘制integrand

    library(ggplot2);
    ggplot(data.frame(x = 0), aes(x)) + stat_function(fun = integrand) + xlim(-50, 50);
    
  4. enter image description here

    1. 我们使用integrate来计算积分;在这里,我假设你对间隔[-Inf, +Inf]感兴趣。

      integrate(integrand, lower = -Inf, upper = Inf)
      #-39323.06 with absolute error < 4.6