MathGroup Archive 2006

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

Search the Archive

Re: Understanding N and Precision

  • To: mathgroup at smc.vnet.net
  • Subject: [mg71197] Re: [mg71147] Understanding N and Precision
  • From: "Chris Chiasson" <chris at chiasson.name>
  • Date: Fri, 10 Nov 2006 06:37:56 -0500 (EST)
  • References: <200611090838.DAA15669@smc.vnet.net>

N[x] is equivalent to N[x,MachinePrecision] not N[x,$MachinePrecision]

Mathematica has two kinds of approximate calculations, those where
Precision and Accuracy information are variable (and also tracked),
and those where it is not variable and not tracked. Please do not
conflate this with PrecisionGoal and AccuracyGoal options for certain
iterative routines like FindMinimum.

N[expr,some number] enables variable accuracy and precision tracking.

N[expr,MachinePrecision] or N[expr] just uses fixed precision
(hardware based) calculations.

note that 9` is a MachinePrecision number

9`20 is a number with a Precision of 20

9 is a number with a Precision of Infinity

Finally, it can be very confusing to look at the StandForm Output
style because it does not display the ` marks. (the same thing goes
for " marks for strings, only it is more complicated)

On 11/9/06, Alain Cochard <alain at geophysik.uni-muenchen.de> wrote:
> Hi.  I would like to understand the following behavior:
>
>    Mathematica 5.2 for Linux
>    Copyright 1988-2005 Wolfram Research, Inc.
>     -- Motif graphics initialized --
>
>    In[1]:= MatrixForm[{{exact1=Cos[3Pi/2+Pi/7], Precision[exact1]}, \
>                        {exact2=Cos[40139127975 Pi/14], Precision[exact2]}}]
>
>
>    Out[1]//MatrixForm=     23 Pi
>                        Cos[-----]
>                             14               Infinity
>
>                            40139127975 Pi
>                        Cos[--------------]
>                                  14          Infinity
>
> just checking:
>
>    In[2]:= FullSimplify[exact1-exact2]
>
>    Out[2]= 0
>
>    In[3]:= MatrixForm[{{float1=N[exact1], Precision[float1]},\
>                        {float2=N[exact2], Precision[float2]}}]
>
>
>    Out[3]//MatrixForm= 0.433884           MachinePrecision
>
>                        0.433883           MachinePrecision
>
> So the N of supposedly(?) 2 identical numbers is different (although
> the precision is indeed the same). That's what I would like to
> understand most.
>
> Also, if I specify the precision for N, it now gives the same.  E.g.:
>
>    In[4]:= MatrixForm[{{float1=N[exact1,3], Precision[float1]},\
>                        {float2=N[exact2,3], Precision[float2]}}]
>
>
>    Out[4]//MatrixForm= 0.434   3.
>
>                        0.434   3.
>
> including the case where the precision asked is MachinePrecision:
>
>
>    In[5]:= MatrixForm[{{float1=N[exact1,$MachinePrecision], Precision[float1]},\
>                        {float2=N[exact2,$MachinePrecision], Precision[float2]}}]
>
>    Out[5]//MatrixForm= 0.4338837391175581   15.9546
>
>                        0.4338837391175581   15.9546
>
> Why in this case does it gives a precision of "15.9546" and not
> "MachinePrecision", as above, especially since
>
>    In[6]:= N[$MachinePrecision,Infinity]
>
>    Out[6]:= 15.9546
>
> Isn't N[x] equivalent to N[x,$MachinePrecision]?
>
> Thanks in advance for any tip.
>
> Alain
>
>


-- 
http://chris.chiasson.name/


  • Prev by Date: Re: [Help Needed] Converting C++ program into Mathematica Function
  • Next by Date: Re: comparing implicit 0 with machine floats
  • Previous by thread: Re: Understanding N and Precision
  • Next by thread: Re: Understanding N and Precision