MathGroup Archive 2009

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

Search the Archive

Re: Faster alternative to AppendTo?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg102916] Re: [mg102886] Faster alternative to AppendTo?
  • From: Leonid Shifrin <lshifr at gmail.com>
  • Date: Wed, 2 Sep 2009 04:02:38 -0400 (EDT)
  • References: <200909010753.DAA18801@smc.vnet.net>

Hi,

avoid Prepend, Append, PrependTo and AppendTo inside loops like a plague.

Take a look at

http://www.mathprogramming-intro.org/book/node515.html

and

http://www.mathprogramming-intro.org/book/node240.html

where I specifically discuss this problem and show a couple of faster
implementations
It is  probably possible to solve this with Mathematica   much more
efficiently yet.

Regards,
Leonid


On Tue, Sep 1, 2009 at 11:53 AM, Dem_z <dem_z at hotmail.com> wrote:

> Hey, sorry I'm really new. I only started using mathematica recently, so
> I'm not that savvy.
>
> Anyways, I wrote some code to calculate (and store) the orbits around
> numbers in the Collatz conjecture.
>
> "Take any whole number n greater than 0. If n is even, we halve it (n/2),
> else we do "triple plus one" and get 3n+1. The conjecture is that for all
> numbers this process converges to 1. "
>  http://en.wikipedia.org/wiki/Collatz_conjecture
>
>
> (*If there's no remainder, divides by 2, else multiply by 3 add 1*)
> g[n_] := If[Mod[n, 2] == 0, n/2, 3 n + 1]
>
> (*creates an empty list a. Loops and appends the k's orbit into variable
> "orbit", which then appends to variable "a" after the While loop is
> completed.  New m, sets new k, which restarts the While loop again.*)
> a = {};
> Do[
>  k = m;
>  orbit = {k};
>  While[k > 1, AppendTo[orbit, k = g[k]]];
>  AppendTo[a, orbit];
>  , {m, 2,1000000}];
>
> Anyways it seems that the AppendTo function gets exponentially slower, as
> you throw more data into it. Is there a way to make this more efficient? To
> calculate a million points takes days with this method.
>
>



  • Prev by Date: Re: Nesting functional commands
  • Next by Date: Re: Nesting functional commands
  • Previous by thread: Faster alternative to AppendTo?
  • Next by thread: Re: Faster alternative to AppendTo?