MathGroup Archive 2011

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

Search the Archive

Re: Using FindRoot on an equation involving Log terms

Hey Andrew,

The problem is likely the direction it uses to begin the search.
x = 0.655 is a minimum. If you give a initial value above that it finds your
If you give a initial value below that it will go the other way which
eventually diverges when x approaches zero.

You can take a better look using the following two lines of code:

<< Optimization`UnconstrainedProblems`

FindRootPlot[expr, {x, 0.6}, PlotRange -> {{0, 1}, {-100, 100}}]

(The output graph comes out bugged but you can still see what you need to
see: the steps it took).

The colors are explained in

By the way, FindInstance works:

FindInstance[expr == 0, x, Reals] // N



On Tue, Jan 18, 2011 at 8:51 AM, Andrew DeYoung <adeyoung at>wrote:

> Hi,
> I am trying to find the root of a certain expression in Mathematica
> version 7:
> expr = 110.52499999999998 + (300. - 135.52499999999998/(1 - x)) (1 -
> x) - 300. x - 135.52499999999998 Log[1 - x] + 135.52499999999998
> Log[x]
> It appears to plot fine, for example using Plot[expr, {x, 0, 1}].  The
> plot shows that there should be a root at about x=0.85.  However, when
> I try to find this root, using for example the following:
> FindRoot[expr, {x, 0.5}]
> I get an error message:
> "FindRoot::lstol: The line search decreased the step size to within
> tolerance specified by AccuracyGoal and PrecisionGoal but was unable
> to find a sufficient decrease in the merit function.  You may need
> more than MachinePrecision digits of working precision to meet these
> tolerances."
> and it prints a seemingly incorrect (according to the qualitative form
> of the plot) result: {x -> 0.344678}.  Only if I use for example
> FindRoot[expr, {x, 0.7}]
> do I get the seemingly "correct" root: {x -> 0.849823}.
> Can you help me see why the FindRoot is getting stuck at {x ->
> 0.344678} when I use starting values far away from 0.7 or 0.8?  I will
> ultimately want to find the roots of many similar functions, which may
> have more than one "actual" root, so it would be helpful if I could
> see why FindRoot[expr, {x, 0.5}] does not give {x -> 0.849823}.  (also
> when I tried NSolve[expr==0,x], Mathematica will not solve it.)
> Thank you,
> Andrew DeYoung
> Carnegie Mellon University

  • Prev by Date: Re: SetOptions does not work with Grid
  • Next by Date: Re: Using FindRoot on an equation involving Log terms
  • Previous by thread: Re: Using FindRoot on an equation involving Log terms
  • Next by thread: Re: Using FindRoot on an equation involving Log terms