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(…)
integratedf
覆盖第一个参数的值,因此需要将参数的顺序切换到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(…)
integratedf
覆盖第一个参数的值,因此需要将参数的顺序切换到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
fintegrandintegrand