RE: Why Doesn't N[Pi,i] Give i Digits For Small i, Math ematica 4,on NT
- To: mathgroup at smc.vnet.net
- Subject: [mg20236] RE: [mg20220] Why Doesn't N[Pi,i] Give i Digits For Small i, Math ematica 4,on NT
- From: "Ersek, Ted R" <ErsekTR at navair.navy.mil>
- Date: Fri, 8 Oct 1999 18:30:14 -0400
- Sender: owner-wri-mathgroup at wolfram.com
randmarg at magma.ca wrote:
------------------------
If I execute:
Table[{i, N[Pi, i]}, {i, 1, 20}]
I get:
{{1, 3.14159}, {2, 3.14159}, {3, 3.14159}, {4, 3.14159}, {5, 3.14159},
{6, 3.14159}, {7, 3.14159}, {8, 3.14159}, {9, 3.14159}, {10, 3.14159},
{11, 3.14159}, {12, 3.14159}, {13, 3.14159}, {14, 3.14159}, {15,
3.14159}, {16, 3.14159}, {17, 3.1415926535897932},
{18, 3.14159265358979324}, {19, 3.141592653589793238},
{20, 3.1415926535897932385}}
I'd expect something like
{{1,3},{2,3.1},{3,3.14},{4,3.141},{5,3.1416},{6,3.14159},{7,3.141593},....
It seems N[] only works as expected above 16 digits of requested
precision.
---------------------------
This has been a pet peeve of mine for a long time. I learned from someone
in this group that SetPrecision will do what for exact numbers.
In[1]:=
Table[{i, SetPrecision[Pi, i]}, {i, 1, 20}]
Out[1]=
{{1,3.},{2,3.1},{3,3.14},{4,3.142},{5,3.1416},{6,3.14159},{7,3.141593},{8,3.
1415927},{9,3.14159265},{10,3.141592654},{11,3.1415926536},{12,3.14159265359
},{13,3.141592653590},{14,3.1415926535898},{15,3.14159265358979},{16,3.14159
2653589793},{17,3.1415926535897932},{18,3.14159265358979324},{19,3.141592653
589793238},{20,3.1415926535897932385}}
However, you can't simply replace any use of N with SetPrecision.
N[expr,100] will only give you 100 digits if (expr) has better than 100
digits of precision. On the other hand SetPrecision[expr,100] will take any
numeric value and give you a value with 100 digits. With SetPrecision you
don't know which digits are right. Consider the examples below.
In[2]:=
SetPrecision[3.0/7, 50]
(* Most of the digits are wrong. *)
Out[2]=
0.42857142857142854763807804374664556235074996948242
In[3]:=
N[3.0/7, 50]//InputForm
(* Sorry, all digits farther to the right are unknown. *)
Out[3]=
0.42857142857142855
In[4]:=
N[3/7,50]
(* In this case all 50 digits are correct because 3/7 is exact. *)
Out[4]=
0.42857142857142857142857142857142857142857142857143
--------------------
Regards,
Ted Ersek
For Mathematica tips, tricks see
http://www.dot.net.au/~elisha/ersek/Tricks.html