MathGroup Archive 2011

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

Search the Archive

Re: Root finding needs higher accuracy

  • To: mathgroup at smc.vnet.net
  • Subject: [mg123212] Re: Root finding needs higher accuracy
  • From: DrMajorBob <btreat1 at austin.rr.com>
  • Date: Sat, 26 Nov 2011 05:10:03 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <jalbrn$sib$1@smc.vnet.net> <201111250959.EAA11288@smc.vnet.net>
  • Reply-to: drmajorbob at yahoo.com

Clear[digits]
digits[precision_] := Module[{x, root},
   root = x /.
     Quiet@FindRoot[f12[x], {x, 1, 3.4}, Method -> "Brent",
       WorkingPrecision -> precision, MaxIterations -> 250];
   Replace[
    RealDigits@N[root, precision] - RealDigits@N[Sqrt@E, precision] //
     First, {x : Longest[0 ..], ___} :> Length@{x}]
   ]
digits@75
ListPlot[{#, digits@#} & /@ Range[17, 80]]

Bobby

On Fri, 25 Nov 2011 03:59:24 -0600, HwB <hwborchers at googlemail.com> wrote:

> Okay, with the help of Fred Simons, Netherlands, I realized that the
> magic keyword here is "WorkingPrecision" --- though I don't understand
> how to know an appropriate value for it in advance (I am not using
> Mathematica on a regular basis). At least, Mathematica itself is
> requesting more iterations if necessary.
>
>    SetPrecision[
>        x /. FindRoot[f12[x], {x, 1, 3.4}, Method -> "Brent",
>        WorkingPrecision -> 75, MaxIterations -> 250], 20]
>
>    1.6487212707001281468
>
> Still, I find it strange that Mathematica cannot solve this expression
> symbolically.
>
> Regards
> Hans Werner
>
>
> On Nov 24, 1:04 pm, HwB <hwborch... at googlemail.com> wrote:
>> I would like to numerically find the root of the following function
>> with up to 20 digits.
>>
>>     f12[x_] := Log[x] + x^2 / (2 Exp[1]) - 2 x / Sqrt[Exp[1]] + 1
>>
>> This problem is known to be difficult for solvers in double precision
>> arithmetics. I thought it should be easy with Mathematica, but the
>> following attempts were not successful.
>>
>>     SetPrecision[
>>         x /. FindRoot[f12[x], {x, 1.0, 3.4}, Method -> "Brent",
>>                  AccuracyGoal -> Infinity, PrecisionGoa=
> l -> 20], 16]
>>     # 1.648732212532746
>>     SetPrecision[
>>         x /. FindRoot[f12[x], {x, 1.0, 3.4}, Method -> "Secant",
>>                  AccuracyGoal -> Infinity, PrecisionGoa=
> l -> 20], 16]
>>     # 1.648710202030051
>>
>> The true root obviously is Sqrt[Exp[1]]//N = 1.648721270700128...
>>
>> The symbolic solver explicitely says it cannot solve this expression.
>> What do I need to do to get a much more exact result out of
>> Mathematica?
>>
>> Many thanks, Hans Werner
>


-- 
DrMajorBob at yahoo.com



  • Prev by Date: Re: Root finding needs higher accuracy
  • Next by Date: Re: Using Equal with Real Numbers
  • Previous by thread: Re: Root finding needs higher accuracy
  • Next by thread: Re: Root finding needs higher accuracy