RE: How find the max value of
- To: mathgroup@smc.vnet.net
- Subject: [mg11841] RE: [mg11819] How find the max value of
- From: Ersek_Ted%PAX1A@mr.nawcad.navy.mil
- Date: Wed, 1 Apr 1998 00:35:46 -0500
barreto"@fec.unicamp.br wrote: ---------- | |w[x_,y_] := Sin[x]*Cos[y]; | |and I need to get the max value of the function in a determinate |interval | |for example | | |{x,0,1},{y,-1,0} |How can I do that? | Find the minimum of ( -w[x,y] ) and then change the sign. You want to find a global minimum. In order to do that FindMinimum needs to start sufficiently close to the global minimum. Otherwise it will likely converge on a local minimum that isn't the global minimum. You can do that by sampling the function at the points on a grid, and start at the point where ( -w[x,y] ) is the greatest. In the lines below I hacked out some code to do this. If you like you can implement this in a package. In the lines below use it my code on a less trivial example. For this example FindMinimum would have worked if it started at almost any point in the given interval. For other examples it will be more important to sample at the points in a grid. Ted Ersek _______________________________ In[1]:= w[x_,y_] := Sin[x+Pi/3]*Cos[y+Pi/3]/(x^2+1/2) In[2]:= Module[{pnts, z, biggest, index, start, result}, ( pnts=Table[{x,y,w[x,y]},{x,0,2,0.1},{y,-2,0,0.1}]; pnts=Flatten[pnts,1]; z=Part[Transpose[pnts],3]; biggest=Max[z]; index=Position[pnts,biggest]; index=Part[index,1,1]; start=Part[pnts,index]; result=FindMinimum[-w[x,y],{x,start[[1]]},{y,start[[2]]}]; result/.{dip_,xyvalues_}->{-dip,xyvalues} )] Out[2]= {1.788104802108598, {x -> 0.1118975014816867, y -> -1.047197650578143}}