我想创建一个带有参数'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
希望还有其他一些更简单的方法可以做到这一点!
答案 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