R中的romberg算法,data.frame问题

我正在尝试使用R编写Romberg算法。我认为这样做应该很接近代码,但是尝试时出现一些错误。

library(pracma)

trapzfun <- function(f,a,b,maxit){
  h=(b-a)/maxit
  xi=seq(a,length.out=maxit+1)
  fi=f(xi)
  s=0
  for (i in 1:maxit) {
    s=s+fi[i]
  }
  s=(h/2)*(fi[0]+fi[maxit])+h*s
  return(s)
}

romberg <- function(f,eps,nmax) {
  Q=matrix(0,nmax,nmax)
  converged = 0
  for (i in 0:(nmax)) {
    N=2^i
    Q[i,0] = trapzfun(f,maxit)
    for (k in 0:(i)) {
      n=k+2
      Q[i,k+1]=1.0/(4^(n-1)-1)*(4^(n-1)*Q[i,k] - Q[i-1,k])
    }
    if (i>0) {
      if (abs(Q[i,k+1] - Q[i,k]) < eps) {
        converged = 1
      }
    }
  }
  print(Q[i,k+1],maxit,converged)
  return(Q[i,converged)
}

f1 <- function(x) {
  x^4
}
a=0.0;b=1.0;maxit=2
romberg(f1,1.0e-12,10)

完成后,应在(i,k + 1)处打印Q矩阵以及间隔数和收敛位置。但是,我收到错误消息:

Error in x[[jj]] : 
  attempt to select less than one element in get1index <real> 

当我显示回溯时,它给出:

3.
`[<-.data.frame`(`*tmp*`,i,value = numeric(0)) 
2.
`[<-`(`*tmp*`,value = numeric(0)) 
1.
romberg(f1,1e-12,10) 

我不太确定我在哪里出错。有人知道是什么原因造成的吗?

jiangshui126 回答:R中的romberg算法,data.frame问题

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3163422.html

大家都在问