Re: Re: Re: "Accumulate" in Mathematica 6
- To: mathgroup at smc.vnet.net
- Subject: [mg82973] Re: [mg82949] Re: [mg82837] Re: "Accumulate" in Mathematica 6
- From: DrMajorBob <drmajorbob at bigfoot.com>
- Date: Mon, 5 Nov 2007 05:05:09 -0500 (EST)
- References: <200710301049.FAA20459@smc.vnet.net> <fg9o2k$lv7$1@smc.vnet.net> <200711011009.FAA07420@smc.vnet.net> <30842530.1194217543780.JavaMail.root@m35>
- Reply-to: drmajorbob at bigfoot.com
Simpler (and marginally faster) is With[{m = 500, n = 20}, ListPlot[ Transpose@ Accumulate@RandomReal[NormalDistribution[0, Sqrt[1/m]], {m, n}], DataRange -> {1/m, 1}, Joined -> True]] // Timing Bobby On Sun, 04 Nov 2007 05:12:42 -0600, Andrzej Kozlowski <akoz at mimuw.edu.pl> wrote: > It is in the nature of things that specialized tools can be better > optimized than more general ones. In particular, this is true of > computer programs. > > As for usefulness: I will give just one example. This graphic > represents one of the most important objects in mathematics. > > With[{m = 500, n = 20}, > ListPlot[ > Accumulate /@ > Map[Prepend[#, 0] &, > RandomReal[NormalDistribution[0, N[Sqrt[1/m]]], {n, m}]], Joined > -> True, > DataRange -> {0, 1}]] > > I think the speed of generating this alone justifies the existence of > Accumulate. > > Andrzej Kozlowski > > > > On 1 Nov 2007, at 19:09, Oskar Itzinger wrote: > >> Taken - so it's speed. Does that imply we can expect in the future >> a whole >> bunch of >> >> speed-optimized functions for doing a similar thing for, say, >> Times, Divide, >> or >> >> any other function one can dream of? >> >> BTW, your mileage may vary - but in my code I've certainly much more >> occasions to >> >> use Fold/FoldList with other functions than Plus [as per the new >> Accumulate]. So, >> >> since Fold/FoldList plays a reasonably important role in functional >> programming, >> >> wouldn't speeding *them* up be more useful in general than >> providing just >> individually >> >> optimized functions? >> >> Thanks. >> >> /oskar >> >> "Andrzej Kozlowski" <akoz at mimuw.edu.pl> wrote in message >> news:fg9o2k$lv7$1 at smc.vnet.net... >>> On 30 Oct 2007, at 19:49, Oskar Itzinger wrote: >>> >>>> Very sadly, Mathematica 6 is not supported under Irix - so I can't >>>> play with >>>> it practically - but I noticed in the online >>>> >>>> documentation that there is a new function "Accumulate[list]", >>>> defined to be >>>> equivalent to "Rest[FoldList[Plus, 0, list]]", >>>> >>>> giving a list of the successive accumulated totals of the >>>> elements in >>>> <list>. >>>> >>>> Funny. While it was considered obsolete and superseded by >>>> "FoldList" in >>>> Mathematica 2, Mathematica 1 (!) already did >>>> >>>> have a function "Accumulate", defined as >>>> >>>> Accumulate[f, g[e1, e2, e3, ...]] <==> g[e1, f[e1, e2], f[f[e1, >>>> e2], e3], >>>> ...] >>>> >>>> so that >>>> >>>> Accumulate[Plus, Range[5]] <==> {1, 3, 6, 10, 15} >>>> >>>> However, "Accumulate" in Mathematica 1 clearly was not restricted >>>> to "Plus" >>>> but rather specifically intended for dealing >>>> >>>> with functions that take exactly two arguments - so, I believe that >>>> "Accumulate" in Mathematica 6 is much less usable >>>> >>>> than the former in Mathematica 1. >>>> >>>> Maybe I'm missing something here - but what was the rationale behind >>>> re-implementing "Accumulate" in such a restricted >>>> >>>> version now? >>>> >>>> Thanks. >>>> >>>> /oskar >>>> >>>> >>>> >>>> >>> >>> You are missing just one thing - performance. Accumulate in this >>> restricted sense is incredibly fast - and extremly useful. >>> >>> Andrzej Kozlowski >>> >> >> >> > > > -- DrMajorBob at bigfoot.com
- References:
- Re: "Accumulate" in Mathematica 6
- From: "Oskar Itzinger" <oskar@opec.org>
- Re: "Accumulate" in Mathematica 6