2013-04-18 28 views
0

我想计算一个二次方程的不同y值的根。但是当我运行下面的代码时得到一个我不明白的错误。如果y只是一个数值,而不是向量c(0.6,0.4,0.9),它就可以工作。我错误地使用了sapply,或者它是错误的函数变量传递?如何使用sapply循环函数?

# Paramters for quadratic poly 
a<-0.875 
b<-0.3779 
c<-0.098 
y<- c(0.6,0.4,0.9) 

# quadratic function 
fun<-function(x) c-y+b*x+a*x^2 

# Finding root in specific interval function 
root<- function (x) uniroot(fun,c(0,2))$root 

# Finding roots for a list of y values 
res<-sapply(y,root) 
+0

你不通过你的'y'(成为在'root'功能'x')你内心'fun'功能。 FWIW,我得到相同的错误调用'root()'。 – Justin

回答

2

比如,你可以这样做:

sapply(y,function(y) uniroot(fun,c(0,2),y=y,c=c,a=a,b=b)) 
+0

谢谢...这现在可以工作。所以这是一个关于将变量传递给函数的quastion。 #为二次聚 Paramters一个<-0.875 B'-0.3779 ç<-0.098 ý< - C(0.8,0.4) #二次函数 乐趣<-function(X,Y,A,B, c)c-y + b * x + a * x^2 #在特定区间0,2 sapply(y,function(y)uniroot(fun,c(0,2),y = y,c = C,A = A,b = b)个$根) –