R中的基本被积函数过程

R中的基本被积函数过程,r,for-loop,integral,trigonometry,R,For Loop,Integral,Trigonometry,我一直在想这个问题,但不幸的是,我对积分和R都是新手。有人能帮我弄清楚我可能做错了什么吗?问题如下: 以下是我目前的代码: ## Question 3 rm(list=ls()) ## a) X<-(2*(1:20)) X ## b) Y<-rep(0,20) Y ## c) for (k in 1:20){ Y[k] <- k if (k < 12){ Y[k]<-cos(3*k) } else if (k >= 12) {

我一直在想这个问题,但不幸的是,我对积分和R都是新手。有人能帮我弄清楚我可能做错了什么吗?问题如下:

以下是我目前的代码:

## Question 3
rm(list=ls())

## a)
X<-(2*(1:20))
X

## b)
Y<-rep(0,20)
Y

## c)
for (k in 1:20){
  Y[k] <- k
  if (k < 12){
    Y[k]<-cos(3*k)
  } else if (k >= 12) {
    integral <- function(t) sqrt(t)
    Y[k]<-integrate(integral, lower = 0, upper = k)
  }
}
Y
##问题3
rm(list=ls())
##(a)

X问题是,
integrate(…)
将给您一个
列表
作为结果,您希望将其替换为向量。这就是错误所在

integral <- function(t) sqrt(t)
result <- integrate(integral, lower = 0, upper = 1)
is(result)
# [1] "integrate" "oldClass" 

result$value
# [1] 0.6666667

integral您可能会发现使用一个简单的表达式来表示在适当限制下计算的t^(1/2)的积分很有帮助。这个问题并不是说你必须用R代码来计算积分。谢谢你的帮助!你可以标记答案并投票表决,以证明这个解决方案是正确的。
integral <- function(t) sqrt(t)
result <- integrate(integral, lower = 0, upper = 1)
is(result)
# [1] "integrate" "oldClass" 

result$value
# [1] 0.6666667
for (k in 1:20){
  if (k < 12){
    Y[k]<-cos(3*k)
  } else if (k >= 12) {
    integral <- function(t) sqrt(t)
    result <- integrate(integral, lower = 0, upper = k)
    Y[k] <- result$value
  }
}