Re: Distance Between a B-Spline Surface
- To: mathgroup at smc.vnet.net
- Subject: [mg132248] Re: Distance Between a B-Spline Surface
- From: Bob Hanlon <hanlonr357 at gmail.com>
- Date: Thu, 23 Jan 2014 03:34:05 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
- References: <20140121080248.A720969E5@smc.vnet.net>
The documentation for NMinimize states that "NMinimize always attempts to find a global minimum of f subject to the constraints given." The use of "always attempts to find" rather than "finds" implies that there is no guarantee. The documentation also states: Possible settings for the Method option include "NelderMead", "DifferentialEvolution", "SimulatedAnnealing", and "RandomSearch". Consequently, for complicated functions (perhaps any one that requires use of NMiniimize rather than Minimize) it would probably be best to map NMinimize across the methods to verify that you have the best method. A warning that the solution did not convergence to the requested accuracy within the maximum number of steps should also suggest looking at the other methods. Even Minimize does not state a guarantee of a global minimum for all functions ("If f and cons are linear or polynomial, Minimize will always find a global minimum."). Bob Hanlon On Wed, Jan 22, 2014 at 8:39 AM, Dr. Robert Kragler < kragler at hs-weingarten.de> wrote: > Hi Bob Hanlon, > > referring to you recent MathGroup contributions and [mg132243] > I wonder why > > zmin=NMinimize[{gz[u,v],0<=u<=1,0<=v<=1},{u,v},Method->"DifferentialEvolution"][[1]] > => -0.574058 > > zmax=NMaximize[{gz[u,v],0<=u<=1,0<=v<=1},{u,v},Method->"DifferentialEvolution"][[1]] > => 0.554369 > > pt={2,3,4}; > {dist,sol}=NMinimize[{ Norm[pt-{x,y,z}],gx[u,v]==x,gy[u,v]==y,gz[u,v]==z, > 0<=u<=1,0<=v<=1, > * > 1<=x<=5,1<=y<=5,zmin<=z<=zmax* }, > {x,y,z,u,v}, > *Method->"DifferentialEvolution"*]//Chop > > gives Out[ ]= {3.72822,{x->1.,y->2.75868,z->0.416516,u->0,v->0.420237}} > > and > > pt={2,3,4}; > {dist,sol}=NMinimize[{ Norm[pt-{x,y,z}],gx[u,v]==x,gy[u,v]==y,gz[u,v]==z, > 0<=u<=1,0<=v<=1 > },{x,y,z,u,v}] (* Method -> Automatic *) > > gives Out[]= > {4.13757,{x->2.24681,y->1.00001,z->0.386337,u->0.266016,v->8.48701*10^-7}} > > thus the results obtained are remarkably different. The resulting graphics > show that in the first case (with Method->>"DifferentialEvolution") the > point on the BSpline surface is located roughly along y-axis whereas in the > second case the corresponding point is along x-axis (as show the resulting > coordinates) > > Perhaps, it is naive but I thought that the results would not differ so > much; it seems that they obviously depend on the method chosen. The > question remains : what is the true result?! > > Regards > Robert Kragler > > -- > Prof. Dr. Robert Kragler > Hasenweg 5 > D-88090 Immenstaad, Germany > Phone : +49 (7545) 2833 or 3500 > Email : kragler at hs-weingarten.de > URL : http://portal.hs-weingarten.de/web/kragler > >
- References:
- Distance Between a B-Spline Surface & Point
- From: Bill <WDWNORWALK@aol.com>
- Distance Between a B-Spline Surface & Point