Re: Plotting a function -
- To: mathgroup at smc.vnet.net
- Subject: [mg71661] Re: Plotting a function -
- From: "dimitris" <dimmechan at yahoo.com>
- Date: Sun, 26 Nov 2006 03:48:42 -0500 (EST)
- References: <ek990u$k88$1@smc.vnet.net>
Although I am not quite sure that I understand your question, here is one attempt. However note that my solution is not very quick; I am sure someone else will provide you with a better solution. Clear["Global`*"] Here is a function that checks if an integer contains 3 in base-10; if so it returns 10, otherwise it returns 0. f[x_Integer] := If[DigitCount[x, 10, 3] > 0, 1, 0] E.g. f /@ Range[100] {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0} Timing[f /@ Range[100000]][[1]] 5.984*Second Here is your desired function (I believe!) g[x_Integer] := Plus @@ N[f /@ Range[x]]/x Here is your visualization Timing[lst = g /@ Range[1000]][[1]] 32.09400000000001*Second ListPlot[lst, PlotStyle -> {Blue, AbsolutePointSize[3]}, ImageSize -> 400, Axes -> False, Frame -> {True, True, False, False}, FrameTicks -> {Range[0, 1000, 100], Range[0, 0.5, 0.1]}, PlotRange -> {{-0.001, 1030}, {-0.001, 0.41}}, Epilog -> Rectangle[{400, 0.1}, {800, 0.3}, ListPlot[Take[lst, 30], PlotStyle -> {Blue, AbsolutePointSize[4]}, DisplayFunction -> Identity]]] Regards Dimitris Craig Reed wrote: > Hi - > > I'm trying to get Mathematica 5.2 to graph a function which is the ratio of > integers which have a '3' in them. Done in Exce3l, the graph of the first > 32,000 data points has a fractal look to it, especially when done with a > log scale. > > What I've tried is the following > > > f[x_] := Boole[DigitCount[x, 10, 3]] > g[x_] := Sum[f, {i, x}]/x > Plot[g, {x, 1, 100}] > > > I get 3 errors of "g is not a michine-size real number at" followed by 3 > real numbers: > 1.000004125 > 5.016125..... > 9.39607..... > > What am I doing wrong? or perhaps what I should ask is, "Is there a better > way?"