Re: Mathieu function zeros
- To: mathgroup at smc.vnet.net
- Subject: [mg108195] Re: Mathieu function zeros
- From: gekko <pfalloon at gmail.com>
- Date: Wed, 10 Mar 2010 01:45:49 -0500 (EST)
- References: <hn5b5u$6v8$1@smc.vnet.net>
On Mar 9, 10:24 pm, becko BECKO <becko... at hotmail.com> wrote:
> Thanks a lot. This is VERY useful. As you said, I extended it to handle
> the other Mathieu's and it worked very well. I think the only issue is
> that this method doesn't detect zeros where the graph doesn't cross the
> axis (it doesn't detect the zero of x^2, but it does detect the zero of
> x^3). This is not an issue with Mathieu functions. But it would be nice
> if one could exploit the inner workings of Plot a bit more to detect
> zeros that are not crossings. Any ideas?
One quick way would be too identify all local extrema within the plot
and test whether they are really zero. The following is a skeletal
implementation for minima (can be easily extended to cover maxima):
(* define a test function *)
f[x_] := Sin[x]^2
(* define domain *)
{xmin, xmax} = {0, 10*Pi};
(* get points from plot *)
pts = Cases[Plot[f[x], {x,xmin,xmax}], Line[___], Infinity][[1,1]];
(* define functions to test if middle point of a triple is a minimum
*)
minCheck = #[[2,2]]<#[[1,2]] && #[[2,2]]<#[[3,2]] &;
(* get local minima *)
minPts = Select[Partition[pts, 3, 1], minCheck][[All,All,1]];
(* refine minima to higher accuracy and get in the form (xmin, fmin)
*)
minSols = {x/.#[[2,1]], #[[1]]} & /@
(FindMinimum[f[x], {x, #[[1]], #[[3]]}] & /@ minPts);
(* get a reference value to determine the "scale" of the function *)
refVal = Max[Abs[pts[[All,2]]]];
(* select those minima which are essentially zero according to the
scale of the plot *)
zeros = Select[minSols, PossibleZeroQ[#[[2]]+refVal-refVal] &][[All,
1]]
Plot[f[x], {x,xmin,xmax}, Epilog->{Red, PointSize[0.02], Point[{#,0}]&/
@zeros}]
Cheers, P.
PS: in my previous response I was remiss in neglecting to mention that
I originally got the idea of using Plot in this way from Paul Abbott:
http://groups.google.com/group/comp.soft-sys.math.mathematica/browse_thread/thread/1c124ca5e6a0d665/29c24748f126855e?lnk=gst&q=paul+abbott+rootsinrange#29c24748f126855e