Roslina Zakaria wrote: > > I have the following code to solve 4 simultaneous eqns with 4 unknowns > using newton iteration method. But I got the error message: > > pars <- c(1.15, 40, 50, 0.78) > newton.input2 <- function(pars) > { ## parameters to estimate > ....... > > f1 <- pars[1]*pars[2] > f2 <- pars[1]*(pars[1]+1)*pars[2]^2 > f3 <- pars[1]*(pars[1]+1)*pars[3]^2 > f4 <- pars[1]*pars[2]*pars[3](pars[1]+pars[4]) > fval <- c(f1,f2,f3,f4) > ## jacobian matrix > .... > list(fval=fval,jacobian=jacobian) > } > newton.input2(pars) > newt(newton.input2, c(1,20,30,0.5)) > > Note: I use 'newt' code is develope by Rolf Turner. > Error message: > >> newton.input2(pars) > Error in newton.input2(pars) : attempt to apply non-function >> newt(newton.input2, c(1,20,30,0.5)) > Error in fn(p.o, ...) : attempt to apply non-function >
I agree with David. The formula for f4 is surely incorrect. Furthermore: 1. what is the newt package you mention. I can't find it on CRAN. 2. A solution of your system is pars = [ 0, anything, anything, anything ] (if pars[1] == 0 then all f-values will also be 0 regardless of values for pars[2:4]) There are more solutions to your system (try pars = c(-1 , 0, 0, 0)). 3. The jacobian you generate is incorrect 4. I tried to solve your system with the correction mentioned above with my package nleqlsv. I have to change the return value of your function newton.input2 to only return fval. Using Broyden and a numerical jacobian. As far as I can see, this confirms the point I made in item 2. pars[1] = 0 with arbitrary values in pars[2], pars[3], pars[4] is a solution. Berend -- View this message in context: http://n4.nabble.com/Error-meaning-tp1018287p1018468.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.