Re: Cantor Function problem
- To: mathgroup at smc.vnet.net
- Subject: [mg74609] Re: Cantor Function problem
- From: dh <dh at metrohm.ch>
- Date: Wed, 28 Mar 2007 01:41:54 -0500 (EST)
- References: <euanne$duk$1@smc.vnet.net>
Hi Neelaka,
consider:
f[0] = 1;
f[x_] := f[3x]/2 /; x<=1/3;
f[x_] := 1-f[1-x] /; 2/3<=x;
this produces an infinite recursion because in general the end criterion
is never reached. Here is a working approach. Define f[n,x], that
converges to the Cantorfunction if n->infinity;
f[0, x_] = x;
f[n_, x_] := Piecewise[{{0.5*f[n - 1, 3*x], Inequality[0, LessEqual, x,
Less, 1/3]}, {0.5, Inequality[1/3, LessEqual, x, Less, 2/3]},
{0.5 + 0.5*f[n - 1, 3*(x - 2/3)], 2/3 <= x <= 1}}]
Damiel
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}] :=
> Block [{w=(b-a)/3}, {{a-2w, a-w}, {b+w, b+2w}}]
> spawn [intervals_list] := Flatten[Map[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[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}]
>