MathGroup Archive 2000

[Date Index] [Thread Index] [Author Index]

Search the Archive

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/
> >> 
> > 
> > 
> 
> 



  • Prev by Date: Re: Cantor set plot, Dirichlet function plot
  • Next by Date: Re: need little help - no longer!
  • Previous by thread: Re: Cantor set plot, Dirichlet function plot
  • Next by thread: hung for good?