MathGroup Archive 2008

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

Search the Archive

Re: Help to remove equivalent (redundant) solutions from FindRoot[]

  • To: mathgroup at smc.vnet.net
  • Subject: [mg91493] Re: Help to remove equivalent (redundant) solutions from FindRoot[]
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
  • Date: Sat, 23 Aug 2008 01:44:35 -0400 (EDT)
  • Organization: The Open University, Milton Keynes, UK
  • References: <g8lpc9$ikk$1@smc.vnet.net>

Modeler wrote:

> Assume I have the following code to find extrema of the 
> function interpolating Sin[x]Cos[y] in the square  [0,2Pi]x[0,2Pi]:
> 
> f[x_, y_] := Sin[x ] Cos[y] 
> 
> data = Flatten[
> Table[{{x, y}, f[x, y]}, {x, 0, 2 Pi}, {y, 0,
> 2 Pi}], 1]
> 
> g = Interpolation[data, InterpolationOrder -> 4] 
> 
> grad = D[g[x, y], {{x, y}, 1}]
> 
> Table[FindRoot[grad, {{x, x0, 0, 2 Pi}, {y, y0, 0, 2 Pi}}], {x0, 0,
> 2 Pi}, {y0, 0, 2 Pi}]
> 
> This will yield a list of the extrema, some of them are equivalent, but since the starting point of the algorithm is different every time one will get numerical errors that leads to tiny differences in the final values. Therefore, some entries of this list which ought to be equivalent are treated like distinct elements. Union[] or subsequent use of N[] with a given precision and Union[] won't help me get rid of the redundant elements. Any ideas how to bypass this problem?

I am afraid you have misunderstood my original post: I provided the 
above code to illustrate, first how to find the zeros of the derivatives 
of an interpolating function, second to emphasize some of the 
difficulties do to a thorough search of the zeros.

So the grid give you some of the zeros, many redundant, yet it does not 
give you all the zeros.

Regards,
-- Jean-Marc



  • Prev by Date: Re: Minimize with complex values
  • Next by Date: Re: Maximize
  • Previous by thread: Help to remove equivalent (redundant) solutions from FindRoot[]
  • Next by thread: Re: Help to remove equivalent (redundant) solutions from FindRoot[]