[Date Index]
[Thread Index]
[Author Index]
Re: Using FindRoot
*To*: mathgroup at smc.vnet.net
*Subject*: [mg83466] Re: Using FindRoot
*From*: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
*Date*: Wed, 21 Nov 2007 02:49:15 -0500 (EST)
*Organization*: The Open University, Milton Keynes, UK
*References*: <fhu7qo$7dv$1@smc.vnet.net>
tdude wrote:
> 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?
(Note that you have a syntax error in your expression: [Pi] should be
either "\[Pi]" or "Pi" -- without the double quotes.)
So you have a real function of a real variable, say,
f(x) = (2*R^2*ArcCos[45.9/(2*R)]) - (.5*45.9*Sqrt[4*R^2 - 45.9^2])
-.15*Pi*(R^2)
which is defined on D = (-inf, -22.95] U [22.95, inf), since 4*R^2 -
45.9^2 is negative for -22.95 < R < 22.95 and so the square root is not
defined on this interval when dealing with real numbers only.
You are looking for x in D such that f(x) = 0.
Now, contrary to the other CAS you tried, Mathematica has no problem
working with complex number; indeed, by default, Mathematica assume that
this is the complex field which is used.
Consequently, if you are interested in real values and roots only, you
must give a starting point for Newton's Method which lies on the
interval of definition and is located on the same side of the root.
Thus 0.1 is not an option in this case. If you are unsure where to
start, piloting the function helps to decide.
expr = -.15*
Pi*(R^2) + (2*R^2*ArcCos[45.9/(2*R)]) - (.5*45.9*
Sqrt[4*R^2 - 45.9^2]);
Plot[expr, {R, 0, 40}]
Now, we see that we can choose, say, 25 as starting point and we get the
correct real answer.
In[3]:= FindRoot[expr, {R, 25}]
expr /. % // Chop
Out[3]= {R -> 30.8774}
Out[4]= 0
Regards,
--
Jean-Marc
Prev by Date:
**RE: Using FindRoot**
Next by Date:
**Dynamic Timeout**
Previous by thread:
**Re: Using FindRoot**
Next by thread:
**Extra spacing in GraphicsGrid**
| |