MathGroup Archive 2010

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

Search the Archive


  • To: mathgroup at
  • Subject: [mg111096] FindRoot
  • From: Themis Matsoukas <tmatsoukas at>
  • Date: Tue, 20 Jul 2010 03:43:18 -0400 (EDT)

I have a cubic polynomial in z (ZEQ) that depends on a parameter p.  The polynomial has three real roots when p is in the interval (p1, p2).  I then define function F[X] to be the ratio of the Max-to-Min (real) roots of ZEQ when p has the value X. Of course, F[X] makes sense only when ZEQ has three real roots, which restricts p to be in the interval p1<p<p2. 

The problem: while F[X] is evaluated (and plotted) correctly, if I try to solve for, say F[X]=6, I get a wrong answer (the correct answer is X=0.4). I suspect the problem is that Mathematica does not restrict the evaluation of F[X] within the interval (p1,p2). If I don't want to write my own routine for the root, is there a way to restrict FindRoot to work only inside the interval (p1, p2)?

ZEQ=-0.049973 p^2+(0.44137p-0.00873 p^2) z-z^2+z^3;

FindRoot[F[X]-6, {X, 0.40}]
{X->0.586195-5.08604*10^-16 I}

TableForm[Table[{X, F[X]-6}, {X, 0.38, 0.42, 0.01}]]
0.38	0.55303
0.39	0.266973
0.40	-0.00436745
0.41	-0.262155
0.42	-0.50744



  • Prev by Date: Re: A ODE I need to solve
  • Next by Date: Re: Avoid the use of certain functions
  • Previous by thread: Multiple packages in a single application
  • Next by thread: Re: FindRoot