Re: a strange line of code
- To: mathgroup at smc.vnet.net
- Subject: [mg52739] Re: a strange line of code
- From: David Bailey <dave at Remove_Thisdbailey.co.uk>
- Date: Sat, 11 Dec 2004 05:21:59 -0500 (EST)
- References: <cpb00k$j28$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Stefan Schuster wrote: > Hello, > > in a notebook, I found and function to calculate the Feigenbaum > bifurcation Diagram. > I principial understand the Feigenbaum, and I think I'm also able to > write such an funcion by myself, but not in this compact way. > > Can someone please explain me the meaning of the Symbols #, @ and & > > Here is the Code: > > Feigenbaum = Compile[{{ > ?, _Real}}, ({?, #} &) /@ Union[Drop[NestList[ > ? # (1 - #) &, 0.2, 300], 100]]]; > > thanks in advance > > Stefan > Hi, I think your function got a bit scrambled, but in answer to your question, the # and & characters together create a pure function. For example, (#^2+1)& is a pure function that squares its argument and adds one to it! Although '@' is a Mathematica operator, it does not feature here. The /@ operator is just another way of doing Map! A good way to unpick code like this, is to choose a bit (in a notebook) with the mouse and click repeatedly to extend the selection. This process takes into account all the precedences of operators, etc. so that you can extract a sub-expression and paste it somewhere and test it on its own. Some people love writing expressions like that - and, to be fair, the result is usually more efficient - but such code can be frighteningly opaque - particularly when you come to look at it in 3 months time! David Bailey