Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Minima

9 views
Skip to first unread message

Paul Abbott

unread,
Jul 30, 1997, 7:00:00 AM7/30/97
to

Bernhard Petri wrote:

> Is there a way to determin several (best all) minima and/or maxima of a
> interpolating function optained with ndsolve?

There is only *one* maxima or minima. Do you mean all local maxima and
minima?

Code for finding the extrema of functions over a domain using Plot and
Cases
was presented in "Maxima and minima over an interval," in The
Mathematica Journal 6(4): 26, 1996. It also works with interpolating
functions:

In[1]:= Delta[f_, {x_, a_, b_}] := Module[{y}, y =
Last[Transpose[Cases[Plot[f, {x, a, b},
PlotRange -> All, DisplayFunction -> Identity],
_Line, Infinity][[1,1]]]]; {Min[y], Max[y]}]

In[2]:= sol = First[NDSolve[{y''[x] == -y[x], y[0] == 1, y'[0] == 0},
y,
{x, -6, 6}]];

In[3]:= Plot[y[x] /. sol, {x, -6, 6}];

Here we find the minima and maxima over (-6,6):

In[4]:= Delta[y[x] /. sol, {x, -6, 6}]
Out[4]= {-0.99999, 0.999987}

In the forthcoming issue of the Mathematica Journal, there is code for
finding roots of a function over a domain. Applying this to the
derivative of a function yields the extrema:

In[5]:= Needs["Utilities`FilterOptions`"]

In[6]:= RootsInRange[d_, {l_, lmin_, lmax_},
opts___] := Module[{s, p, x,
f = Function[l, Evaluate[d]]},
s = Plot[f[l], {l, lmin, lmax},
Compiled -> False, Evaluate[FilterOptions[Plot, opts]]];
p = Cases[s, Line[{x__}] -> x, Infinity];
p = Map[First, Select[Split[p,
Sign[Last[#2]] == -Sign[Last[#1]] & ], Length[#1] == 2 & ],
{2}];
Apply[FindRoot[f[l] == 0, {l, ##1},
Evaluate[FilterOptions[FindRoot, opts]]] & , p, {1}]]

For example:

In[7]:= {x, y[x]} /. RootsInRange[y'[x] /. sol, {x, -6, 6}] /. sol //
Chop
Out[7]= {{-3.14159, -0.99999}, {0, 1.}, {3.14159, -0.99999}}

Cheers,
Paul

____________________________________________________________________
Paul Abbott Phone: +61-8-9380-2734
Department of Physics Fax: +61-8-9380-1014
The University of Western Australia
Nedlands WA 6907 mailto:pa...@physics.uwa.edu.au
AUSTRALIA http://www.pd.uwa.edu.au/Paul

God IS a weakly left-handed dice player
____________________________________________________________________


0 new messages