MathGroup Archive 1998

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

Search the Archive

Max of Concave List...And The Winner Is....

  • To: mathgroup at smc.vnet.net
  • Subject: [mg13016] Max of Concave List...And The Winner Is....
  • From: "Chris Farr" <farr at brown.edu>
  • Date: Tue, 30 Jun 1998 00:26:13 -0400
  • Sender: owner-wri-mathgroup at wolfram.com

Math Group:

Thanks for all of your help in finding the maximum of a list which is 
concave.  I tested the speed of 3 algorithms sent in on a list of
values  yielded by a quadratic function.  In short, in terms of speed,
"The  Bisection Method" won with "The Binary Search Method" coming in
a close  second.  Here is the list:

x = Table[40000*x+-(1/2)*x^2,{x,1,80000}];

The position of the list at the optimum is 40,000 (half way on the grid
 of 80,000).

Here is the list from slowest to fastest (the code for each algorithm is
 below)...

"Max[x]" ==>3.35 seconds
Catch-Throw Method" ==> 1.93 seconds "Binary Search Method" ==>
0.05 seconds "The Bisection Method" ==> 0. seconds


"Max[x]"

Max[x]

"Catch-Throw Method"

e=First[x];
Catch[Scan[If[#<e,Throw[e],e=#]&,Rest[x]]]

"Binary Search Method"

(While[Length[x]>1,i=Floor[Length[x]/2]; If[x[[i]]<=
x[[i+1]],x=Take[x,-Length[x]+i];,x=Take[x,i];]]; First[x])

"The Bisection Method"

concaveMax[li_]:= Module[{a=1,b=Length[li]}, While[b-a>1,
With[{n=Quotient[b+a,2]},
If[li[[n]]==li[[n+1]],Return[li[[n]]]];
If[li[[n]]<li[[n+1]],a=n+1,b=n]]]; Max[li[[a]],li[[b]]]]



  • Prev by Date: Re: Re: Maximize
  • Next by Date: Importing external grid file to do contour plot
  • Previous by thread: Re: two questions
  • Next by thread: Importing external grid file to do contour plot