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: [mg123377] Re: Root finding needs higher accuracy
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Mon, 5 Dec 2011 05:13:19 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <jalbrn$sib$1@smc.vnet.net> <201111250959.EAA11288@smc.vnet.net> <201111261148.GAA25182@smc.vnet.net> <CAO-JnY2SzN8+tX1VCj6negzdtsAb-aaGKQZSDSMkFVRnAa8d3g@mail.gmail.com>

Explicit formulas (in radicals) for the solutions of cubics or quartics 
are not very "useful", (which is why Solve and Reduce have the Options 
Cubics and Quartics) (although their discovery lead directly to the 
discovery of complex numbers - which are as "useful" as anything in 
mathematics).

 However the fact that Mathematica can produce closed form solutions of 
polynomial equations of arbitrary degree (this does not contradict 
Abel's theorem!)  is extremely "useful". Just one example, is the 
ability to evaluate things like

Integrate[1/(1 + t + t^3 + t^11), t] // Normal

and lots of other things. 

The ability of Reduce to solve exactly many kinds of transcendental 
equations and inequalities is tremendously "useful".

(Of course the word "useful" in the context of mathematics is vague and 
subject to debate. But people who remember G.H. Hardy's boasts that his 
subject, number theory, was and always will remain, entirely "useless" 
realise that making such predictions is risky).

Andrzej Kozlowski


On 4 Dec 2011, at 17:27, Ralph Dratman wrote:

> "I don't find strange at all. Human being do this essentially by
> guessing the answers: how can you expect Mathematica to do the same?"
>
> And those guesses used to take decades or centuries to turn up! I have
> read that finding the roots of a general cubic equation was a terribly
> difficult challenge to get in closed form. Mathematica just spits out
> the roots. Is that really useful? I'm not sure, but I agree that it is
> certainly impressive.
>
> Ralph Dratman
>
>
>
> On Sat, Nov 26, 2011 at 6:48 AM, Andrzej Kozlowski <akoz at mimuw.edu.pl> 
wrote:
>>
>> On 25 Nov 2011, at 10:59, HwB 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
>>
>> I don't find strange at all. Human being do this essentially by 
guessing
>> the answers: how can you expect Mathematica to do the same? What
>> Mathematica can do, and this is quite remarkable, is to solve the
>> equation "exactly". The following answer is an "exact answer", not an
>> approximate one:
>>
>> sols =
>> x /. Solve[Log[x] + x^2/(2 Exp[1]) - 2 x/Sqrt[Exp[1]] + 1 == 0, 
x,
>>
>>  Reals]
>>
>> {Root[{4 #1-4 Sqrt[E]&,1.64872127070012814685}],Root[{4 #1-4
>> Sqrt[E]&,1.64872127070012814685}],Root[{4 #1-4
>> Sqrt[E]&,1.64872127070012814685}]}
>>
>> This is entirely different from finding the roots approximately; here
>> Mathematica actually proves that there are exactly three roots and 
that
>> they are equal. The presence of approximate numbers in the answer 
does
>> not mean that the answer itself is approximate, in fact it can be
>> computed to arbitrary precision:
>>
>> In[10]:= N[First[sols], 100]
>>
>> Out[10]= 
>> =
1.648721270700128146848650787814163571653776100710148011575079311640661021194215608632776520056366643
>>
>> You can replace 100 by 1000 if you like. This answer is different from but not in any respect worse than Sqrt[E], which is what you surely expected. Mathematica does not notice the possibility of a further simplification because in the case of transcendental roots it does not attempt to simplify the pure function inside the root object, as it would do in an algebraic case, e.g.
>>
>> Root[4 #1-4 Sqrt[E]&,1]
>>
>> Sqrt[E]
>>
>> Probably this is because the number of situations in which this would be useful is  small, but there might also be some other reason. Anyway, it is just possible that this is one respect in which Reduce could be improved, i.e. it could simplify things like
>>
>> Root[{#1-Sqrt[2]&,1.414213562373095}]
>>
>> To
>>
>> Sqrt[2]
>>
>> as it does in the algebraic case.
>>
>> Of course it is possible to "guide" Mathematica to the desired answer, e.g.
>>
>> eq =   x^2/(2*E^1) - (2*x)/Sqrt[E^1] + Log[x] + 1 == 0; >>
>> eq1 = eq /. x -> Sqrt[E]*u
>> u^2/2 - 2*u + Log[Sqrt[E]*u] + 1 == 0
>>
>> Reduce[eq1, u, Reals]
>> u==1
>>
>> Andrzej Kozlowski
>>
>>
>>




  • Prev by Date: Re: How to get elements satisfying specific condition from a list
  • Next by Date: Re: How to get elements satisfying specific condition from a list
  • Previous by thread: Passing function to custom plotting routine
  • Next by thread: Re: FindShortestTour Function- Roundtrip & Constructive