Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2007
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Efficient repeated use of FindRoot

  • To: mathgroup at smc.vnet.net
  • Subject: [mg74069] Re: [mg74049] Efficient repeated use of FindRoot
  • From: "Chris Chiasson" <chris at chiasson.name>
  • Date: Thu, 8 Mar 2007 04:40:04 -0500 (EST)
  • References: <200703070816.DAA26723@smc.vnet.net>

P.S. If you are feeling adventurous, you can try to trace functions in
the contexts that are shown after executing that NMinimize
RandomSearch command:

Contexts[]

>From looking at the context names, I think that Mathematica developers have
largely tackled these problems before now, but that the necessary
functions just aren't documented for our use.

On 3/7/07, Chris Chiasson <chris at chiasson.name> wrote:
> There is at least one way to make Mathematica handle the largrange
> multipliers (or, alternatively, do the interior point method) for a
> given starting point and constraints.
>
> Take a look at the documentation for NMinimize and go to Advanced
> Documentation. Then go to Random Search. One of the options for the
> method gives the ability to directly specify the set of points tried
> for post processing.
>
> In[7]:= NMinimize[{100(y-x^2)^2+(1-x)^2,x^2+y^2<=1},{x,y},Method->{"RandomSearch","InitialPoints"->{{0,0}}}]
> Out[7]= {0.0456748,{x->0.786415,y->0.617698}}
>
> This should be relatively fast because only one start point is
> specified and Mathematica is using internal code to construct the
> lagrange multipliers (or do the interior point method if that is
> selected).
>
> That still leaves the problem of repeatedly constructing the
> simultaneous equations from convergence criteria. As you were saying
> in the first post, it would be nice to construct the simultaneous
> equations once and then solve repeatedly. I am thinking about how
> homotopic continuation (a method Carl Woll showed to me in an earlier
> MathGroup post) could be applied in this situation.
>
> Do you actually have all the simultaneous equations listed out
> somewhere (so that all variables are a function of only that one
> parameter you want to vary)?
>
> On 3/7/07, Chris Chiasson <chris at chiasson.name> wrote:
> > You have hit the nail exactly on the head. NMinimize uses optimization
> > techniques that are less efficient than those of FindMinimum if the
> > global optimum can be found by using local (derivative) information
> > from a chosen starting point. Until FindMinimum sprouts a constraint
> > handling feature, we are left to fill the gap. I will think about your
> > problem a bit more.
> >
> > On 3/7/07, Michael A. Gilchrist <mikeg at utk.edu> wrote:
> > > Hi Chris,
> > >
> > > The basic answer is I am interested in understanding the lagrangian and I
> > > think working with it is the best way to begin to understand it.  I've
> > > also run into issues with NMinimize in the past.  In my experience,
> > > NMinimize is more compuationally intensive than FindRoot or FindMinimum
> > > for systems where there's a single global optimum as I would expect in
> > > this case.  In addition, NMinimize is too 'blackbox' for me (i.e. I
> > > understand the routines in FindRoot better).  As a result I don't feel
> > > like I have as much control over it as I do FindRoot.
> > >
> > > Also, from what I understand I'd be running into the same problem of the
> > > large initialization time.
> > >
> > > Mike
> > >
> > >
> > > On Wed, 7 Mar 2007, Chris Chiasson wrote:
> > >
> > > > Why are you not using NMinimize or NMaximize?
> > > >
> > > > On 3/7/07, Michael A. Gilchrist <mikeg at utk.edu> wrote:
> > > >> Hi all,
> > > >>
> > > >> I've got an optimization problem that I am trying to evaluate numerically
> > > >> and at a number of different points of a particular variable.  I am using
> > > >> a Lagrangian multiplier to impose a constraint on the optimization of the
> > > >> 'free variables' and as a result trying to find the root for a set of n
> > > >> coupled equations (in its full form n = 4000+ variables).
> > > >>
> > > >>
> > > >> Using some approximations I can come up with some reasonable initial
> > > >> conditions, but, as you might imagine, it takes quite some time to run
> > > >> the code.  Looking at the output it appears that the greatest amount of
> > > >> time is initialization of the FindRoot routine (once the routine is
> > > >> running it calculates each step quite quickly).
> > > >>
> > > >>
> > > >> Here's some pseudo code to illustrate the basic idea:
> > > >>
> > > >> (*set up eqns and variables*)
> > > >> Clear[m];
> > > >> vars = Table[m[i], {1, n}]
> > > >>
> > > >> eqns = Table[
> > > >>         (llik[i, vars] + \[Lambda] m[i] ==0), {i, 2, n}]
> > > >>                                 (*llik previously defined)
> > > >> ics =   Table[
> > > >>          m0[i] = T[i]/phi[i] (*T[i] and Phi[i] previously defined*),
> > > >>         {i, 2, n}];
> > > >>
> > > >> frvars = Table[{m[i], m0[i] * 0.01, m0[i]*10}, {i, 2, n}];
> > > >>
> > > >>
> > > >> (*look for solution to problem for multiple values of m[1] *)
> > > >> Table[
> > > >>         FindRoot[eqns, frvars], {m[1], 0.01, 0.2, 0.01}]
> > > >>
> > > >>
> > > >> I am aware of the NDSolve package StateData that allows one to
> > > >> efficiently evaluate DE's with various different initial
> > > >> conditions by processing the equations.
> > > >>
> > > >> I've looked through the documentation on FindRoot and haven't found a
> > > >> similar routine/ability.  I'm wondering if anyone has any ideas on how
> > > >> one might increase the efficiency of my calculations.
> > > >>
> > > >> Thanks.
> > > >>
> > > >> Mike
> > > >>
> > > >>
> > > >> -----------------------------------------------------
> > > >> Department of Ecology & Evolutionary Biology
> > > >> 569 Dabney Hall
> > > >> University of Tennessee
> > > >> Knoxville, TN 37996-1610
> > > >>
> > > >> phone:(865) 974-6453
> > > >> fax:  (865) 974-6042
> > > >>
> > > >> web: http://eeb.bio.utk.edu/gilchrist.asp
> > > >> -----------------------------------------------------
> > > >>
> > > >>
> > > >>
> > > >
> > > >
> > > > --
> > > > http://chris.chiasson.name/
> > > >
> > >
> > > -----------------------------------------------------
> > > Department of Ecology & Evolutionary Biology
> > > 569 Dabney Hall
> > > University of Tennessee
> > > Knoxville, TN 37996-1610
> > >
> > > phone:(865) 974-6453
> > > fax:  (865) 974-6042
> > >
> > > web: http://eeb.bio.utk.edu/gilchrist.asp
> > > -----------------------------------------------------
> > >
> > >
> >
> >
> > --
> > http://chris.chiasson.name/
> >
>
>
> --
> http://chris.chiasson.name/
>


-- 
http://chris.chiasson.name/


  • Prev by Date: Re: Efficient repeated use of FindRoot
  • Next by Date: Factorizing...
  • Previous by thread: Re: Efficient repeated use of FindRoot
  • Next by thread: Evaluate a spline function