MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

using FindMinimum and FindRoot with "numerically defined" functions

  • To: mathgroup at
  • Subject: [mg81044] using FindMinimum and FindRoot with "numerically defined" functions
  • From: Scott.T.Milner at
  • Date: Sat, 8 Sep 2007 04:02:24 -0400 (EDT)

Many times I have wanted to use Mathematica to find the minimum or a
root of a function that was defined in terms of a numerical solution
to a differential equation.  (For example, solving a 1-dimensional ODE
boundary value problem by the "shooting method" can be expressed in
this way.)

Here is a simple example (in which we pretend that we do not know how
to solve analytically the ODE presented).

fcn[x_] := Block[{},
    ans = NDSolve[{y''[t] == -x y[t], y'[0] == 0, y[0] == 1}, y, {t,
0, 1}];
    y[1] /. ans[[1]]]

If you plot this function with Plot[fcn[x], {x, 0, 24}], you will find
a minimum at about x=10.  So for instance, I would like to find the
minimum of fcn[x] using FindMinimum[ ], but this does not work:

I attempt to use FindMinimum[ ] (supplying two initial values to avoid
using derivatives):

FindMinimum[fcn[x], {x, 10, 10.1}]

which generates a long string of error messages (NDSolve::ndnum and
several ReplaceAll::reps).

Similar errors are generated if I attempt to use this function with
FindRoot[ ], as in:

FindRoot[fcn[x] == 0., {x, 4, 4.1}]

Is there some way to successfully use FindMinimum[ ] and FindRoot[ ]
with a function defined in terms of the numerical solution to an ODE
using NDSolve, or other such "numerically defined" functions?

  • Prev by Date: Re: Combining Fractions with Identical Denominator?
  • Next by Date: Troubles with NDSolve--missing arguments of function
  • Previous by thread: Re: Confusing documentation on ColorData, where to get list of ColorFunctions ?
  • Next by thread: Re: using FindMinimum and FindRoot with "numerically defined" functions