将积分值保存在数组中

问题描述 投票:0回答:1

我想将整数值保存在数组中。比如说,在下面的程序中从

q=1
q=10
。但由于输出带有非数字部分,我不能这样做。

q=10
integrand<-function(x)(q*x^3)
integrate(integrand,lower=0,upper=10)

输出为“25000,有绝对误差 < 2.8e-10"

如何删除非数字部分?

r integration
1个回答
5
投票

str()
是你的朋友来解决这个问题:

> intval <- integrate(integrand,lower=0,upper=10)
> str(intval)
List of 5
 $ value       : num 25000
 $ abs.error   : num 2.78e-10
 $ subdivisions: int 1
 $ message     : chr "OK"
 $ call        : language integrate(f = integrand, lower = 0, upper = 10)
 - attr(*, "class")= chr "integrate"

所以你可以看到你需要

value
元素:

> intval$value
[1] 25000

然后:

integrand <- function(x, q=10) { q*x^3 }
tmpfun <- function(q) {
    integrate(integrand,lower=0,upper=10,q=q)$value
}
sapply(1:10,tmpfun)
##  [1]  2500  5000  7500 10000 12500 15000 17500 20000 22500 25000

我希望这是一个简化的例子,因为这个特定的答案更简单地通过(1)分析积分和(2)认识到可以从积分中取出标量倍数来获得:

1:10*(10^4/4)
得到相同的答案。

© www.soinside.com 2019 - 2024. All rights reserved.