Hi all, Consider the following function:
#### my.func = function(x){ y=ifelse(x>-.5,0,ifelse(x< -.8,abs(x)/2,abs(x))) print(c(x,y)) #print what was tested and what the result is return(y) } curve(my.func,from=-1,1) #### When I attempt to find the maximum of this function, which should be -.8, I find that optimize gets stuck in the plateau area and doesn't bother testing the more interesting bits of the function: #### optimize(my.func,interval=c(-1,1),maximum=TRUE) #### I really don't understand why the search moves to the positive/ constant area of the function and neglects the more negative area of the function. On step #4, after finding that there is no difference between tests at -.23, .23 & .52, shouldn't the algorithm try -.52? In fact, it seems to me that it would make sense to try -.52 on step 3, so that we've tested one negative, one positive (found no difference), now one negative again. Thoughts? Of course I could define my interval more reasonably for this particular function, but this is in fact simply one of a class of functions I'm exploring, none of which have known formal descriptions as above (I'm exploring a large number of 'black boxes'). I do know that the maximum must occur between -1 and 1 for all however. Please advise on how I might use optimize more usefully. Mike -- Mike Lawrence Graduate Student, Department of Psychology, Dalhousie University Website: http://memetic.ca Public calendar: http://icalx.com/public/informavore/Public "The road to wisdom? Well, it's plain and simple to express: Err and err and err again, but less and less and less." - Piet Hein ______________________________________________ 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.