Re: Re: Find many Roots

*To*: mathgroup at smc.vnet.net*Subject*: [mg32107] Re: [mg32103] Re: Find many Roots*From*: Andrzej Kozlowski <andrzej at tuins.ac.jp>*Date*: Thu, 27 Dec 2001 03:34:08 -0500 (EST)*Sender*: owner-wri-mathgroup at wolfram.com

In fact in this particular case one does not really need to look at the graph. It is enough to observe that function: f[x_] := Tan[x] - 1/x is undefined at In[2]:= l=Prepend[Table[(k*Pi)/2,{k,1,24/Pi,2}],0] Out[2]= {0, Pi/2, (3*Pi)/2, (5*Pi)/2, (7*Pi)/2} Moreover it's derivative: In[3]:= D[f[x],x] Out[3]= 1/x^2 + Sec[x]^2 is strictly positive wherever the function is defined. It follows that there can be just a single root in each of the open intervals that make up the domain. Thus we can find all the roots as follows: In[4]:= FindRoot[Evaluate[f[x]==0],{x,#}]&/@(Plus@@@Partition[N[l],2,1]/2) Out[4]= {{x -> 0.8603336747802416}, {x -> 3.4256184594916825}, {x -> 6.437298362730657}, {x -> 9.529334419122055}} Andrzej Kozlowski Toyama International University JAPAN http://platon.c.u-tokyo.ac.jp/andrzej/ On Tuesday, December 25, 2001, at 01:44 PM, Tom Burton wrote: > Hello, > > On Mon, 24 Dec 2001 08:33:36 +0000 (UTC), in comp.soft- > sys.math.mathematica you wrote: > >> Tan[x]==1/x, {x,0,12}] > > For this particular problem, I would select: > > Step 1: Find the approximate roots visually: > > p1 = Plot[Tan[x]-1/x, {x,0,12}, PlotRange -> {-1,1}]; > > approx = {1, 3, 6, 10}; > > Step 2: Refine these approximations: > > answers = FindRoot[Tan[x] == 1/x, {x,#}] & /@ approx > > Step 3: Verify solutions > > (Tan[x] - 1/x) /. answers > > Step 4: Check for missing solutions > > Show[ p1, Graphics[{Hue[0], PointSize[0.03], Point[{x,0}] /. answers}] ] > > I higly recommend a visual method, but iff you need a more automated > method, I would suggest something like > > answers = FindRoot[Tan[x] == 1/x, {x,#}] & /@ Range[1,12] > > xx = Select[ > Union[ x /. answers, SameTest -> (Abs[#1-#2]<10^-6 &) ], > 0 <= # <= 12 &] > > Tom Burton > > >