Re: Cantor Function problem

*To*: mathgroup at smc.vnet.net*Subject*: [mg74605] Re: Cantor Function problem*From*: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>*Date*: Wed, 28 Mar 2007 01:39:51 -0500 (EST)*Organization*: The Open University, Milton Keynes, UK*References*: <euanne$duk$1@smc.vnet.net>

Neelaka Seneviratne wrote: > hi, > > i am not a member of this group. but i have a difficulty in Mathematica that > you may be able to help with. > I got the following program from a book but it doesnt work. please help to > resolve it. > this is for a friend of mine who wants to generate the cantor function for > his BSc final year project. > > thank you very much > neelaka seneviratne > > > > spawn[{a_Rational, b_rational}] := -----------------------^ Syntax error : must be Rational > Block [{w=(b-a)/3}, {{a-2w, a-w}, {b+w, b+2w}}] > spawn [intervals_list] := -------------------^ Syntax error : must be List > Flatten[Map[spawn, intervals], 1 /; ----------------------------------^ Missing close square bracket > Length[intervals[[1]]] >1 > > removedintervals[n_]:= > Flatten[NestList[spawn, {{1/3, 2/3}}, n-1], 1] > > f[0] = 1; > f[x_] := f[3x]/2 /; x<=1/3; > f[x_] := 1-f[1-x] /; 2/3<=x; > > connect [{a_, b_}] := Block [{y=f[a]}, Line[{{a,y}, {b,y}}]] > > CantorFunction[levels_] := show[Graphics[{Thickness[.001], > Map[connect, removedintervals[levels]]}], > Axes-> {0,0}, Ticks->{N[Range[0., 1, 1/9], 3], Automatic}] ----^^^^^ Should be AxesOrigin You will find below your code with the corrections added. In[1]:= spawn[{a_Rational, b_Rational}] := Block[{w = (b - a)/3}, {{a - 2*w, a - w}, {b + w, b + 2*w}}]; spawn[intervals_List] := Flatten[spawn /@ intervals, 1] /; Length[intervals[[1]]] > 1; removedintervals[n_] := Flatten[NestList[spawn, {{1/3, 2/3}}, n - 1], 1]; f[0] = 1; f[x_] := f[3*x]/2 /; x <= 1/3; f[x_] := 1 - f[1 - x] /; 2/3 <= x; connect[{a_, b_}] := Block[{y = f[a]}, Line[{{a, y}, {b, y}}]]; CantorFunction[levels_] := Show[Graphics[{Thickness[0.001], connect /@ removedintervals[levels]}], AxesOrigin -> {0, 0}, Ticks -> {N[Range[0., 1, 1/9], 3], Automatic}]; In[9]:= CantorFunction[5]; [...graphic deleted...] Regards, Jean-Marc