       # Re: Possible bug in FindRoot[] in Mathematica 3.0

```Adrian Cable wrote:
>
> Hi there,
> I think I've possibly found a bug in Mathematica 3.0. Consider the
> equation:
>
>         2^x + 3^x = 5^x
>
> Well, it's obvious that x = 1 is a solution, and you can check with
> Plot[] that x = 1 is indeed the only solution. When I try to Solve[]
> this with Mathematica, it says:
>
> Solve::"tdep":
>     "The equations appear to involve transcendental functions of the \
> variables in an essentially non-algebraic way."
>
> This is fair enough - I have no idea how to solve this type of equation
> without some numerical method either. The problem comes when I try to
> use FindRoot:
>
> In:= FindRoot[2^x+3^x==5^x,{x,0}] Out:= {x -> -21.1781}
>
> -21? I'm sorry? Obviously, the iterative formula it has created
> (presumably by the Newton-Raphson process) for the equation diverges
> when the starting point is taken as x = 0. However, if I do something
> like this, it handles it correctly:
>
> In:= FindRoot[2^x+3^x==5^x,{x,-1}] FindRoot::"cvnwt":
>     "Newton's method failed to converge to the prescribed accuracy after
> \
> 15 iterations."
> Out:= {x -> -21.0059}
>
> So, why does Mathematica correctly recognise that the iterative sequence
> does not converge in the second case, yet it doesn't recognise this in
> the first case and thus returns a totally bogus result without any
> error message?
>
> This looks like a bug to me. Or am I just missing something here?
>
> Thanks, cheers,

It is converging. To a value outside the complex plane, unfortunately.
Numeric routines can be like that.

In:= ee = 2^x + 3^x - 5^x;

In:=  Limit[ee, x->-Infinity]
Out= 0

In:= FindRoot[ee, {x,0}]
Out= {x -> -21.1781}

In:= ee /. %
-7
Out= 4.21538 10

To get values for x that leave smaller residuals, you might do

In:=  FindRoot[ee, {x,0}, AccuracyGoal->32, MaxIterations->500]
Out= {x -> -107.739}

In:= ee /. %
-33
Out= 3.69142 10

Just a guess, but possibly when your starting point is -1 and it gives
{x -> -21.0059} the residual is just large enough that it fails to
satisfy the Automatic AccuracyGoal.

In:= FindRoot[ee, {x,-1}, AccuracyGoal->5] Out= {x -> -16.6796}

In:= ee /. %
-6
Out= 9.53764 10

By the way, the expression ee is entire, that is, analytic throughout
the complex plane. Hence the equation ee == constant will have
infinitely many solutions for all but at most one value of constant. It
is straightforward to show that x->1 is the only real root, hence the
other solutions are complex-valued. Here is one I found by
trial-and-error.

In:=  FindRoot[ee, {x,4+40I}]
Out= {x -> -0.638232 + 40.1885 I}

In:= ee /. %
-10             -10 Out= 2.47291 10    - 1.65612
10    I

Daniel Lichtblau
Wolfram Research

```

• Prev by Date: Re: Writing output to text files
• Next by Date: Mathlink problem with lists of reals
• Prev by thread: Possible bug in FindRoot[] in Mathematica 3.0
• Next by thread: Re: Possible bug in FindRoot[] in Mathematica 3.0