Re: Periodic function Roots
- To: mathgroup at smc.vnet.net
- Subject: [mg58406] Re: Periodic function Roots
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Fri, 1 Jul 2005 02:01:58 -0400 (EDT)
- Organization: The Open University, Milton Keynes, England
- References: <da0bka$fkj$1@smc.vnet.net> <da0gq1$qnb$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Valeri Astanoff wrote: > An example of what i do in such a case: > > In[1]:=f[x_]:=Cos[x]+.5 Cos[2x]+.25 Cos[3x]+2.5 Cos[4x] > > In[2]:=t=Table[FindRoot[f[x] == 0,{x,u}],{u,0.1,2Pi,0.1}]; > > In[3]:=Union[t,SameTest -> (Abs[(x/.#2)-(x/.#1)]<10^-5&)] > > Out[3]= > {{x -> -0.51129},{x -> 0.51129},{x -> 1.20136}, > {x -> 1.91222},{x -> 2.81887},{x -> 3.46432}, > {x -> 4.37096},{x -> 5.08183},{x -> 5.7719}} > > > v.a. > Drawing on the work of Valeri, here is another approach using *Reduce* and several other command depending of you intend to do with the solutions retuned by *Reduce*. In[1]:= f[x_] := Cos[x] + (1/2)*Cos[2*x] + (1/4)*Cos[3*x] + (5/5)*Cos[4*x] In[2]:= Reduce[f[x] == 0, x] Out[2]= C[1] â?? Integers && (x == -2*ArcTan[Sqrt[Root[11 - 126*#1 + 260*#1^2 - 114*#1^3 + #1^4 & , 1]]] + 2*Pi*C[1] || x == 2*ArcTan[Sqrt[Root[11 - 126*#1 + 260*#1^2 - 114*#1^3 + #1^4 & , 1]]] + 2*Pi*C[1] || x == -2*ArcTan[Sqrt[Root[11 - 126*#1 + 260*#1^2 - 114*#1^3 + #1^4 & , 2]]] + 2*Pi*C[1] || x == 2*ArcTan[Sqrt[Root[11 - 126*#1 + 260*#1^2 - 114*#1^3 + #1^4 & , 2]]] + 2*Pi*C[1] || x == -2*ArcTan[Sqrt[Root[11 - 126*#1 + 260*#1^2 - 114*#1^3 + #1^4 & , 3]]] + 2*Pi*C[1] || x == 2*ArcTan[Sqrt[Root[11 - 126*#1 + 260*#1^2 - 114*#1^3 + #1^4 & , 3]]] + 2*Pi*C[1] || x == -2*ArcTan[Sqrt[Root[11 - 126*#1 + 260*#1^2 - 114*#1^3 + #1^4 & , 4]]] + 2*Pi*C[1] || x == 2*ArcTan[Sqrt[Root[11 - 126*#1 + 260*#1^2 - 114*#1^3 + #1^4 & , 4]]] + 2*Pi*C[1]) In[3]:= sols = N[%] Out[3]= C[1] â?? Integers && (x == -0.6455013610404079 + 6.283185307179586* C[1] || x == 0.6455013610404079 + 6.283185307179586*C[1] || x == -1.2524776552773014 + 6.283185307179586* C[1] || x == 1.2524776552773014 + 6.283185307179586*C[1] || x == -1.828145008678062 + 6.283185307179586*C[1] || x == 1.828145008678062 + 6.283185307179586*C[1] || x == -2.9529034404768435 + 6.283185307179586* C[1] || x == 2.9529034404768435 + 6.283185307179586*C[1]) In[4]:= sols /. C[1] -> 0 Out[4]= x == -0.6455013610404079 || x == 0.6455013610404079 || x == -1.2524776552773014 || x == 1.2524776552773014 || x == -1.828145008678062 || x == 1.828145008678062 || x == -2.9529034404768435 || x == 2.9529034404768435 In[5]:= ToRules[%] Out[5]= Sequence[{x -> -0.6455013610404079}, {x -> 0.6455013610404079}, {x -> -1.2524776552773014}, {x -> 1.2524776552773014}, {x -> -1.828145008678062}, {x -> 1.828145008678062}, {x -> -2.9529034404768435}, {x -> 2.9529034404768435}] Best regards, /J.M.