楼主: as7641
3833 2

[统计软件] R语言中 对拉格朗日插值函数进行求积分的问题 [推广有奖]

  • 0关注
  • 0粉丝

初中生

28%

还不是VIP/贵宾

-

威望
0
论坛币
27 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1719 点
帖子
5
精华
0
在线时间
19 小时
注册时间
2015-4-21
最后登录
2016-10-19

楼主
as7641 学生认证  发表于 2016-3-16 22:10:00 |只看作者 |坛友微信交流群|倒序 |AI写论文
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)

}



关键词:拉格朗日 拉格朗 R语言 Polynomial Evaluation function result wrong 字母
沙发
BBluo 发表于 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.

希望能帮到楼主
已有 1 人评分论坛币 收起 理由
admin_kefu + 25 热心帮助其他会员

总评分: 论坛币 + 25   查看全部评分

使用道具

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

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加JingGuanBbs
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-21 21:32