R中的图积分

R中的图积分,r,R,我想画一个包含积分的函数 # intergrand f f <- function(r,x) x*exp(-r) # integral h <- function(x) { integrate(f, lower=0, upper=Inf, x=x) } plot(h, xlim=c(-2:4), xlab="x", ylab="y", col="red") 我不明白这是什么意思。我希望您能给我一个提示。您的h函数返回一个包含许多变量的列表,而不是一个可以绘制的点 不清楚

我想画一个包含积分的函数

# intergrand f
f <- function(r,x) x*exp(-r)

# integral
h <- function(x) {
    integrate(f, lower=0, upper=Inf, x=x)
}

plot(h, xlim=c(-2:4), xlab="x", ylab="y", col="red")

我不明白这是什么意思。我希望您能给我一个提示。

您的h函数返回一个包含许多变量的列表,而不是一个可以绘制的点

不清楚你在做什么,因为h(x)只是返回x,因为它是对R的积分,R积分为1

将绘制此图的更正代码为:

h<-function(x){
  x
}
plot(h, xlim=c(-2,4), xlab="x", ylab="y", col="red")

这可能是一种更好的方法。

您的h函数返回一个包含许多变量的列表,而不是一个可以绘制的点

不清楚你在做什么,因为h(x)只是返回x,因为它是对R的积分,R积分为1

将绘制此图的更正代码为:

h<-function(x){
  x
}
plot(h, xlim=c(-2,4), xlab="x", ylab="y", col="red")

这可能是一个更好的方法。

这里发生了几件事

  • 看起来您想在
    r
    上集成,而不是
    x
    integrate(…)
    integrated
    f
    覆盖第一个参数的值,因此需要将参数的顺序切换到
    f
  • integrate(…)
    返回包含多个元素的列表。其中之一是
    ,即积分的值。因此,要获得该值,您需要参考
    integrate(…)$value
    。阅读
  • 如果要对函数使用
    plot(…)
    ,则需要对函数进行矢量化。也就是说,它需要将一个向量作为参数,并返回一个长度相同的向量。
    integrate(…)
    函数是R中少数几个没有矢量化的函数之一。幸运的是,有一个特殊的函数,
    Vectorize(…)
    ,用于将标量值函数转换为向量化函数
  • 把这一切汇总起来:

    # intergrand f
    f <- function(r,x) x*exp(-r)   # order of arguments reversed
    # integral
    h <- function(x) integrate(f, lower=0, upper=Inf, x=x)$value
    g <- Vectorize(h)
    x <- seq(-2,4,.1)
    plot(x,g(x), xlim=c(-2,4), xlab="x", ylab="y", col="red")
    
    #整数f
    
    这里发生了几件事

  • 看起来您想在
    r
    上集成,而不是
    x
    integrate(…)
    integrated
    f
    覆盖第一个参数的值,因此需要将参数的顺序切换到
    f
  • integrate(…)
    返回包含多个元素的列表。其中之一是
    ,即积分的值。因此,要获得该值,您需要参考
    integrate(…)$value
    。阅读
  • 如果要对函数使用
    plot(…)
    ,则需要对函数进行矢量化。也就是说,它需要将一个向量作为参数,并返回一个长度相同的向量。
    integrate(…)
    函数是R中少数几个没有矢量化的函数之一。幸运的是,有一个特殊的函数,
    Vectorize(…)
    ,用于将标量值函数转换为向量化函数
  • 把这一切汇总起来:

    # intergrand f
    f <- function(r,x) x*exp(-r)   # order of arguments reversed
    # integral
    h <- function(x) integrate(f, lower=0, upper=Inf, x=x)$value
    g <- Vectorize(h)
    x <- seq(-2,4,.1)
    plot(x,g(x), xlim=c(-2,4), xlab="x", ylab="y", col="red")
    
    #整数f
    f
    integrand
    integrand