Re: Coaxing N[] to work

*To*: mathgroup at smc.vnet.net*Subject*: [mg73386] Re: [mg73370] Coaxing N[] to work*From*: Sseziwa Mukasa <mukasa at jeol.com>*Date*: Thu, 15 Feb 2007 04:57:18 -0500 (EST)*References*: <200702141020.FAA19038@smc.vnet.net>

On Feb 14, 2007, at 5:20 AM, <p at dirac.org> wrote: > Sometimes N[,] doesn't appear to work. Like here: > > > x = {2.0, 3.0, 5.0}; > A = { {6.0, 2.0, 1.0}, {2.0, 3.0, 1.0}, {1.0, 1.0, 1.0} }; > For[ k=0, k<15, ++k, > lambda = x.A.x/(x.x); > y = LinearSolve[A,x]; > x = y / Norm[y,Infinity]; > ] > N[lambda, 30] > > > The output is: > > Out[5]= 0.578933 > > I was expecting 30 digits. Why did N[] ignore my request for 30 > digits Mathematica can't create precision out of nowhere, you only specified 2 digits of precision for the elements of x and A, fortunately Mathematica actually used machine precision numbers and gave you 16, but it can't read your mind and give you 30. Since lambda has 16 digits of precision it's treated as a machine precision number and prints out as such. Here's how to put 30 digits of precision on x and A: In[1]:= x =SetPrecision[{2.0, 3.0, 5.0},30]; A = SetPrecision[{ {6.0, 2.0, 1.0}, {2.0, 3.0, 1.0}, {1.0, 1.0, 1.0} },30]; For[ k=0, k<15, ++k, lambda = x.A.x/(x.x); y = LinearSolve[A,x]; x = y / Norm[y,Infinity]; ] N[lambda, 30] Out[4]= 0.5789333856910527876234959 Regards, Ssezi

**References**:**Coaxing N[] to work***From:*<p@dirac.org>