Re: digit-precision for gaussian inputs converting cartesian matrix from
- To: mathgroup at smc.vnet.net
- Subject: [mg128945] Re: digit-precision for gaussian inputs converting cartesian matrix from
- From: "locometro, INMETRO/UFRJ, Brasil - RJ" <decicco10 at gmail.com>
- Date: Wed, 5 Dec 2012 03:12:18 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-newout@smc.vnet.net
- Delivered-to: mathgroup-newsend@smc.vnet.net
- References: <k9hod3$v0$1@smc.vnet.net>
Bill, Thanks for the suggestions! Em segunda-feira, 3 de dezembro de 2012 06h37min55s UTC-2, Bill Rowe escreveu: > On 11/30/12 at 5:59 AM, decicco10 at gmail.com (locometro, INMETRO/UFRJ, > > Brasil - RJ) wrote: > > > > >I have some issues to discuss here: > > > > >My goal: rotation,x-y plane, apllying over some cartesians vectors. > > > > >(*step 1: I import a input.txt for Gaussian program like this: *) > > > > >%chk=campoX_1.chk %mem=2gb %nproc=4 > > >#p b3lyp/6-31+g(d,p) geom=connectivity field=x+1 pop=reg > > >#int=ultrafine > > > > >single point campo direcao X+01 > > > > >0 1 > > >C 0.00000000 0.00000000 0.00000000 > > >C 1.41786969 0.00000000 0.00000000 > > >C -0.68401407 1.24221249 0.00000000 > > >etc...(72lines). > > > > >(*step 2: I extract the data from input above, as below:*) > > > > >data2 = Take[data1, {9, 56}, {2, 4}]] data3 = Flatten[Take[data1, > > >{9, 56}, {1}]]; data4 = Drop[data1, {8, 56}, None]; > > > > >(*As I need the 1st(molecules symbol), 2nd (X) , 3rd (Y) and 4th(Z) > > >columns, for my table and calculations*). > > > > >(*step 3: Rotation 45 degree, over plane x-y, using the exctracted > > >columns*) > > > > >rotZ = RotationMatrix[45 Degree, {0, 0, 1}]; datarotZ = (rotZ.#) & > > >/@ data2 (*this promote the rotation matrice over x-y-x*) > > > > >output-> {{0., 0., 0.}, {1.00259, 1.00259, 0.}, {-1.36205, 0.394706, > > >0.}, {-2.49436, 0.668808, 0.00086376}, {1.85795, 1.79358, > > >-0.00004936}, {-3.36958, -5.96549, -0.00908542}, \ > > >{-2.95205, -7.30672, 0.00803008},...etc (* cartesians numbers > > >already rotated 45 degrees*). > > > > >BUT NOTICE that the numbers of digits has been modified!, I need the > > >original 8 digits, including zeros, after the decimal point! I do > > >not want mathematica aplying any aproximation or cuts. > > > > There are a couple of issues here. First, any number entered > > with a decimal point and not given an explicit precision is a > > machine precision number in Mathematica. All machine precision > > numbers are stored as binary data. In general, numbers you enter > > as decimal numbers cannot be represented exactly in a finite > > number of binary digits. So, the value Mathematica uses > > typically is slightly different than the value you entered. > > > > Once you start using machine precision values, by default > > Mathematica will use machine precision for other parts of you > > computation. These values also will be slightly different than > > what you enter. As the computation proceeds these small > > differences accumulate. The end result is reversing computations > > often will not result in exactly the same decimal digits even > > though the reverse computation would mathematically be an exact > > inverse, resulting in an identity operation. > > > > The only way around this issue is to either use exact values (no > > decimal point, all fractions expressed as rationals) or to > > increase the precision in the values you enter to make use of > > Mathematica's arbitrary precision arithmetic. The cost is slower > > execution of computations. > > > > A second issue is by default Mathematica doesn't display > > trailing zeros. You can change this by changing your display > > options or by using functions like NumberForm to control how > > Mathematica displays numbers.