functions as arguments to functions

*To*: mathgroup at smc.vnet.net*Subject*: [mg14995] functions as arguments to functions*From*: sean_ross_at_pl-04m3 at smtpgw1.plk.af.mil*Date*: Wed, 2 Dec 1998 03:59:15 -0500*Sender*: owner-wri-mathgroup at wolfram.com

[Contact the author to obtain the notebook mentioned below - mod.] I am looking for some answers in regards to a really mysterious problem I have regarding passing functions into functions when the calls are nested or the functions are complicated. The basic idea is this: I have a root finding routine findroot[f,{x,{x1,x2}}], where f is an expression in the variable x. Inside findroot, I make an "overfunction" which shields the actual numerical routines from undefined regions, complex values, and out of range values. I have a second function lspmopo, which calls on findroot. I have a third function Dkdfm, which calls on lspmopo. I have a fourth function which tries to use findroot[Dkdfm[....,x...],{x,{x1,x2}}]. This makes a function call to findroot embedded inside a findroot operation. lspmopo returns a good answer when called on directly or inside Dkdfm. When it is called on inside of the findroot[Dkdfm[....,x...],{x,{x1,x2}}], it returns a ridiculous answer 1.545+Null which causes the entire procedure to crash. I am attaching the notebook which has all the code. I would really appreciate help, but don't waste your time if you can't look at the notebook. The general procedure I use works for simple functions, but not for complicated ones, so please don't send me any simple examples. This problem only arises when trying to find the roots of functions that themselves must resort to root finding methods for their values. All of the methods I use work when tried individually, but not inside multiple nested function calls, so please don't send me isolated examples that work by themselves. I believe the problem is in passing functions as arguments to functions. If anyone knows how Wolfram programmers do it, such as in the Integrate function, please let me know. I am sure that I do not have the correct combination of Holds, Releases, pure functions etc. that will robustly pass functions without modification through multiple function calls. Please respond to rosss at plk.af.mil as I no longer subscribe to the mathgroup. Thanks, Sean Ross