Re: A simple error
- To: mathgroup at smc.vnet.net
- Subject: [mg102184] Re: A simple error
- From: David Bailey <dave at removedbailey.co.uk>
- Date: Fri, 31 Jul 2009 05:59:22 -0400 (EDT)
- References: <h4rpen$l85$1@smc.vnet.net>
Youness Eaidgah wrote: > Dear all, > I have faced a awkward situation in Mathematica. I want to sum the following > simple equations: > > DTEP12 = 0.11 (80000 - 12000 P + 800000 (1 - R)) + 0.11 (40000 - 12000 P + > 1000000 (1 - R)) + 0.28 (-12000 P + 1200000 (1 - R)) > MTEP12 = 0.11 (-130000 + 12000 (-35 + P) + 800000 R) + 0.11 (-130000 + 12000 > (-35 + P) + 1000000 R) + 0.28 (-130000 + 12000 (-35 + P) + 1200000 R) > > Obviously, the result of the DTEP12+MTEP12 is : 272200 > > However, when I use the following commands > > Simplify[DTEP12+ MTEP12] or FullSimplify[DTEP12+MTEP12] > > Mathematica returns: 272200.+ 0. P + 5.82077*10^-11 R. I am suprised where > the last term comes form (5.82077*10^-11 R)! It is a really really small > value, however, it is still an error. it creates some inconveniences later > in my calculations. I would appreciate if you could help me out. > Thank you, > Youness > > The moral of this, is never manipulate algebraic expressions containing real numbers. A number like 0.11 cannot be stored exactly as a machine precision number, because such numbers are held in binary format. If you enter 0.11 as 11/100 and 0.28 as 28/100 you get exact expressions, which yield the exact result that you expected. This problem is intrinsic to computer arithmetic - a fractional quantity that can be represented exactly in one base (e.g. 10) can't always be represented exactly to another base (e.g. 2). David Bailey http://www.dbaileyconsultancy.co.uk