如何创建多项式的以下函数?

时间:2014-03-15 12:01:49

标签: r function

我想创建一个带有参数'n'的函数,如下所示:

(a_n)* x ^ n +(a_n-1)* x ^(n-1)+ ... +(a_1)* x +(a_0)

已知(a_i)s个系数。

我知道这是一个简单的问题,但我无法弄明白该怎么做。

我的想法是构建一个函数向量:

xx <- numeric(n+1)
  for (i in 1:n+1) {
    xx[i] <- function(x) x^i
  }

并且coe是我定义的系数的向量,我可以尝试:

coe %*% xx

给了我答案。但这不起作用,R显示以下错误消息:

Error in xx[i] <- function(x) { : 
  incompatible types (from closure to double) in subassignment type fix

希望还有其他一些更简单的方法可以做到这一点!

1 个答案:

答案 0 :(得分:1)

计算的函数(a_n)* x ^ n +(a_n-1)* x ^(n-1)+ ... +(a_1)* x +(a_0)

p <- function(x,coefs) {
ens <- rev(seq_len(length(coefs)))-1
sapply(x,FUN=function(x)sum(coefs*x^ens))
}

实施例

> p(x=2,coefs=c(0.5,-3,1,-2))
[1] -8
> p(x=1:3,coefs=c(0.5,-3,1,-2))
[1]  -3.5  -8.0 -12.5