MathGroup Archive 2007

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

Search the Archive

RE: Using FindRoot

  • To: mathgroup at smc.vnet.net
  • Subject: [mg83469] RE: [mg83429] Using FindRoot
  • From: "Jaccard Florian" <Florian.Jaccard at he-arc.ch>
  • Date: Wed, 21 Nov 2007 02:50:52 -0500 (EST)
  • References: <200711200851.DAA07277@smc.vnet.net>

Hello!

First of all, you have to be aware of the fact that FindRoot is using 
Newton method starting with the point you give.
So you have first to draw you function to be able to see where the root 
you search is located and to be able to give an intelligent starting 
point, i.e. a starting point which is near the root (more near than a 
maximum or minimum).
In your example :

f[R_] := 0.15*Pi*R^2 - (2*R^2*ArcCos[45.9/(2*R)] -
        0.5*45.9*Sqrt[4*R^2 - 45.9^2])

Plot[f[R], {R, 0, 40}]

You will see that the definition domain of f(R) is R>22.95.
So, if you look for a real root, it is a very strange idea to give 
R=0.1 as the starting point for FindRoot.
You better try :

In[27]:= FindRoot[f[R], {R, 30}]

Out[27]= {R -> 30.87736860938116}

And you obtain exactly what you expect.

Remember : Never use FindRoot if you are looking for a real root of a 
one-variabled function wihout first having drawed the function !

Regards

F.Jaccard


-----Message d'origine-----
De=A0: tdude [mailto:stiletto at bigfoot.com]
Envoy=E9=A0: mardi, 20. novembre 2007 09:52
=C0=A0: mathgroup at smc.vnet.net
Objet=A0: [mg83429] Using FindRoot

I am trying to find the root of the following equation
FindRoot[.15*[Pi]*(R^2)==(2*R^2*ArcCos[45.9/(2*R)])-(.5*45.9*Sqrt[4*R
^2-45.9^2]),{R,.1}, MaxIterations->100000]

When I try this with two other systems, both give me an answer of 
30.8773686.

However, with Mathematica, the answer I get appears to be a complex 
root, along with this 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.
{R -> 20.1137- 4.87774*10^-14 \[ImaginaryI]}

Why would the answer be a complex root when using Mathematica, yet real 
when using the other two packages?
Thanks Tony.




  • Prev by Date: Re: Using FindRoot
  • Next by Date: Re: Using FindRoot
  • Previous by thread: Using FindRoot
  • Next by thread: Re: Using FindRoot