全部版块 我的主页
论坛 提问 悬赏 求职 新闻 读书 功能一区 经管百科 爱问频道
4365 2
2016-03-16
悬赏 80 个论坛币 未解决

在对拉格朗日插值函数 进行求积分运算的时候得到这个

> integrate(f,lower=0,upper=1)$value

错误于integrate(f, lower = 0, upper = 1) :

  evaluation of function gave a result of wrong type

错误 这个改怎么解决 我需要的是 对这个插值函数进行用字母表示后进行求积分。

以下是拉格朗日插值函数的代码,在单独运行这个函数的时候可以直接运行处所要的插值函数。但是一到积分就不可以了。求教

LagrangePolynomial <- function(x,y) {

  len = length(x)

  if(len != length(y))

    stop("length not equal!")


  if(len < 2)

    stop("dim size must more than 1")


  #pretreat data abd alloc memery

  xx <- paste("(","t -",x,")")

  m <- c(rep(0,len))


  #combin express

  for(i in 1:len) {

    td <- 1

    tm <- "1"

    for(j in 1:len) {

      if(i != j) {

        td <- td*(x - x[j])

        tm <- paste(tm,"*",xx[j])

      }

    }

    tm <- paste(tm,"/",td)

    m<-tm #m <- parse(text=tm)

  }


  #combin the exrpession

  m <- paste(m,"*",y)

  r <- paste(m,collapse="+")


  #combin the function

  fbody <- paste("{ return(",r,")}")

  f <- function(t) {}


  #fill the function's body

  body(f) <- parse(text=fbody)


  return(f)

}



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-3-18 13:07:47
R语言的 integrate() 只能积一维方程,而LagrangePolynomial()是二维的。同时LagrangePolynomial() return 的是一个function; 必须return一个数值(numeric value). 详见:

integrate {stats}        R Documentation
Integration of One-Dimensional Functions

Description
Adaptive quadrature of functions of one variable over a finite or infinite interval.
Usage

integrate(f, lower, upper, ..., subdivisions = 100L,
          rel.tol = .Machine$double.eps^0.25, abs.tol = rel.tol,
          stop.on.error = TRUE, keep.xy = FALSE, aux = NULL)
Arguments

f: an R function taking a numeric first argument and returning a numeric vector of the same length. Returning a non-finite element will generate an error.

希望能帮到楼主
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-3-18 17:01:38
BBluo 发表于 2016-3-18 13:07
R语言的 integrate() 只能积一维方程,而LagrangePolynomial()是二维的。同时LagrangePolynomial() return  ...
本身是个函数,这个函数具体形式可以求出来的,包括求值也可以,但是就是在积分的时候就不行,现在我想能够把这个积分算出来 应该怎么改进?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群