Re: Cantor set plot, Dirichlet function plot
- To: mathgroup at smc.vnet.net
- Subject: [mg23588] Re: [mg23579] Cantor set plot, Dirichlet function plot
- From: David Ong <do226 at is2.nyu.edu>
- Date: Sun, 21 May 2000 18:12:55 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Andrzej, Thanks very much. The code does indeed seem simple. I will also look up the book. David On Sun, 21 May 2000, Andrzej Kozlowski wrote: > It seems to me that the problem of representing such things > graphically has more to do with human psychology than mathematics. The > function I defined is a "finer" approximation to the function that you > asked for than the one you found on MathSource, but it is actually harder to > use it to make a convincing visualization. The problem is that you are > selecting a finite number of points out of a continuum, and the difficulty > is to do so in a way that will seem "enlightening". > > Essentially the same applies to the Cantor set. There is a pretty good > discussion of this in Stan Wagon's "Mathematica in Action". Rather than try > to write my own code this time I just extracted his (and converted all the > global variables to local ones). There are many other interesting and > related constructions in his book(also the code below is explained quite > clearly). > > > > CantorSet[x_Rational, y_Rational, n_] := > Module[{spawn, rem,dep}, > spawn[{a_Rational, b_Rational}] := > Module[{w = (b - a)/3}, {{a - 2*w, a - w}, > {b + w, b + 2*w}}]; spawn[intervals_List] := > spawn /@ intervals; > rem = NestList[spawn, {x, y}, > n]; Show[Graphics[ > {Table[{AbsoluteThickness[4 - (4 - 0.4)*(dep - 1)/ > n], (Line[{{#1[[1]], n - dep}, {#1[[2]], > n - dep}}] & ) /@ Partition[Union[{0, 1}, > Cases[rem, _Rational, dep]], 2]}, > {dep, 1, n}]}], FrameTicks -> > {({#1, BaseForm[N[#1], 3]} & ) /@ (Range[0, 9]/9.), > None, None, None}, Frame -> True, > PlotRange -> {-1, n}, AspectRatio -> 1/4]; ] > > Now just evaluate > > CantorSet[1/3, 2/3, 4] > > and so on. > > > -- > Andrzej Kozlowski > Toyama International University > JAPAN > > http://platon.c.u-tokyo.ac.jp/andrzej/ > http://sigma.tuins.ac.jp/ > > > on 5/21/00 6:44 AM, David Ong at do226 at is2.nyu.edu wrote: > > > > > Thanks Andrzej, > > > > The code for the Dirichlet like function plot wasn't quite what I had > > expected. However, I am glad to have another method to deal with these > > sorts of functions. > > > > Here is some code from Gabriel Chjnevert's "Ploting Monster's of Real > > variables", which I got from math source. Now I am looking for a simple > > way to > > plot an approximation to the Cantor set and would welcome suggestions. > > > > n = 150; > > points = Union @@ Table[{p/q, 1/Denominator[p/q]}, {q, n}, {p, q - 1}]; > > > > ListPlot[points, PlotRange -> {0, .51}] > > > > David > > > > > > > > > > > > > > > > > > On Sun, 21 May 2000, Andrzej Kozlowski wrote: > > > >> Sorry, the definition should of course have been: > >> > >> f[x_] := If[IntegerQ[Numerator[Rationalize[N[x]]]], > >> 1/Denominator[Rationalize[x]], 0] > >> > >> on 00.5.21 0:07 AM, Andrzej Kozlowski at andrzej at tuins.ac.jp wrote: > >> > >>> This is of course a somewhat different matter. One can define a reasonable > >>> "simulation" of this function and in principle plot its graph but I think it > >>> will be hard to see anything interesting. The definition is simple enough: > >>> > >>> f[x_] := If[IntegerQ[Numerator[Rationalize[N[x]]]], > >>> Denominator[Rationalize[x]], 0] > >>> > >>> f is a good approximation to what you want: > >>> > >>> In[3]:= > >>> f[Pi] > >>> > >>> Out[3]= > >>> 0 > >>> > >>> In[4]:= > >>> f[1.4] > >>> > >>> Out[4]= > >>> 5 > >>> > >>> In[5]:= > >>> f[Sqrt[2]] > >>> > >>> Out[5]= > >>> 0 > >>> > >>> Unfortunately it is hard to get a meaningful graph. You could try using > >>> ListPlot and do something like: > >>> > >>> In[6]:= > >>> l1 = Table[{x, f[x]}, {x, 3.0, Pi + 0.1, 0.001}]; > >>> > >>> In[7]:= > >>> l2 = Table[{x, f[x]}, {x, Pi - 0.14, Pi + 0.1, 0.001}]; > >>> > >>> In[8]:= > >>> ListPlot[Union[l1, l2]] > >>> > >>> But the result does not seem t me to be very instructive. In principle I > >>> think > >>> what I wrote in my first reply still holds and I do not think computers are > >>> suitable tools for investigating this sort of phenomena. > >>> > >>> on 00.5.20 11:02 PM, David Ong at do226 at is2.nyu.edu wrote: > >>> > >>>> > >>>> Sorry, I misstated the function. > >>>> f(x)=1/q when x is an element of p/q in lowest terms and f(x)=0 > >>>> otherwise. This is a strange looking function because it is continous at > >>>> every irrational and discontinuous at every rational. > >>>> > >>>> On Sat, 20 May 2000, Andrzej Kozlowski wrote: > >>>> > >>>>> The problem with your question is that the concept of an "irrational > >>>>> number" > >>>>> does not really make sense in relation to a present day computer. Neither > >>>>> Mathematica not any other computer program can distinguish between > >>>>> rationals > >>>>> and irrationals and no sensible concept of an "irrational" number can be > >>>>> implemented. Of course you could invent a new Mathematica function, > >>>>> IrrationalQ, an tell Mathematica it should return True for some well known > >>>>> irrationals, e.g. Pi, E, Sqrt[2], this would not get you very far. It is > >>>>> well known that there can be no algorithm which would decide whether any > >>>>> given (constructible) real number is rational or not. One can easily > >>>>> generate arbitrary long sequences consisting entirely of irrationals, > >>>>> e.g., > >>>>> anything of the form p^(1/n) where p is a prime and n a positive integer, > >>>>> or any real number of the form (1-x^n)^(1/n), where x is any rational > >>>>> s.t. > >>>>> 0<x<1, and n a positive integer>2, but no computer can check this. > >>>>> > >>>>> However, in spite of all the above, it is very easy to plot your > >>>>> function. > >>>>> You simply take the union of the graph of 1/x and the real axis (you must > >>>>> exclude 0 since your function has no value there). This is as good an > >>>>> approximation as one can ever hope for! > >>>>> > >>>>> > >>>>> -- > >>>>> Andrzej Kozlowski > >>>>> Toyama International University > >>>>> JAPAN > >>>>> > >>>>> http://platon.c.u-tokyo.ac.jp/andrzej/ > >>>>> http://sigma.tuins.ac.jp/ > >>>>> > >>>>> on 5/20/00 4:10 PM, David Ong at do226 at is2.nyu.edu wrote: > >>>>> > >>>>>> Hi, > >>>>>> > >>>>>> Would anyone know of an easy way to plot some approximation of this > >>>>>> variant of the Dirichlet function? > >>>>>> f(x)=1/x if x is an element of the rationals and 0 if x is not an element > >>>>>> of the rationals. > >>>>>> > >>>>>> > >>>>>> > >>>>> > >>>>> > >>>> > >> > >> -- > >> Andrzej Kozlowski > >> Toyama International University > >> JAPAN > >> > >> http://platon.c.u-tokyo.ac.jp/andrzej/ > >> http://sigma.tuins.ac.jp/ > >> > > > > > >