MathGroup Archive 2011

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

Search the Archive

Re: iteration question

  • To: mathgroup at
  • Subject: [mg122620] Re: iteration question
  • From: Szabolcs Horvát <szhorvat at>
  • Date: Thu, 3 Nov 2011 03:48:04 -0500 (EST)
  • Delivered-to:
  • References: <j8r9b8$3ie$>

On 2011.11.02. 12:25, Francisco Gutierrez wrote:
> Dear Group:
> I have a function, and I iterate it using fixedpoint. Something of this sort:
> FixedPointList[
>   function[arg1,arg2,arg3, #]&, arg4,
>   SameTest ->  (Max[Abs[Flatten[#1] - Flatten[#2]]]<  0.01&)]
> I would like to know how many steps it takes this function to converge. I have tried with EvaluationMonitor to no avail:
> Block[{veamos, c = 0},
>    veamos = FixedPoint[
>      function[arg1,arg2,arg3, #]&, arg4,
>      SameTest ->  (Max[Abs[Flatten[#1] - Flatten[#2]]]<  0.01&)];
>    EvaluationMonitor :>  c++; {veamos, c}]
> The iterator c simply does not move, and the previous function works ok but returns the value of c as 0.
> I tried if this was true with Length[FixedPointList[...]] and the answer was 20 (which should be the value of c in the immediately previous function). In principle, this would solve my problem, but it seems
> rather inefficient, especially when the convergence criterion is severe (not 0.01, but say 10^-4).
> Is there an efficient and nice way to solve this?

Neither FixedPoint, not Block take the option EvaluationMonitor.  Also, 
the option was included incorrectly in Block.  Options must be separated 
by a colon, not semicolon.

I seriously doubt that FixedPointList would be measurably slower than 
FixedPoint (have you measured it?), but if you really want to avoid 
FixedPointList, you can use

Module[{result, c = 0},
   result = FixedPoint[(c++; f[#])&, value];
   {result, c}

I'd recommend {Last[#], Length[#]}& @ FixedPointList[ ... ] though.

I hope this helps.


Szabolcs Horvát
Mathematica on SO:

  • Prev by Date: Re: Bernoulli Numbers
  • Next by Date: Re: Bernoulli Numbers
  • Previous by thread: Re: iteration question
  • Next by thread: Re: iteration question