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
- References:
- Re: Root finding needs higher accuracy
- From: HwB <hwborchers@googlemail.com>
- Re: Root finding needs higher accuracy