FullSimplify yielding different results in mathematica 8 and 9

3

I have been experiencing some problems running a certain mathematica file in version 9. I've tracked the problem to a particular sum that I perform. Running the same code in version 8 and 9 I get two different results for this sum. If I then ask mathematica whether the two sums are identical mathematica 8 says that they are whereas mathematica 9 says that they are not.

So: I run the same code in version 8 and 9 and get a different result, if I compare the results version 8 says that they are the same, version 9 says that they are not.

Why would this happen? A bug? Comparison attached below.

Chop@FullSimplify[
  1.9999999999999996` x0^4 + 3.9999999999999987` x0^2 x1^2 + 
  2.` x1^4 + 0.3333333333333333` x1^2 x2^2 + (0.857142857142857` x0^2 - 
  0.699854212223765` x0 x1 + 0.14285714285714285` x1^2) x2^2 + 
  (0.5238095238095237` x0^2 + 0.11664236870396075` x0 x1 + 0.5873015873015872` x1^2) x2^2 + 
  (0.5238095238095236` x0^2 + 0.11664236870396079` x0 x1 + 0.5873015873015872` x1^2) x2^2 + 
  (0.5238095238095237` x0^2 + 0.11664236870396089` x0 x1 + 0.5873015873015872` x1^2) x2^2 + 
  (0.523809523809524` x0^2 +  0.11664236870396096` x0 x1 + 0.5873015873015872` x1^2) x2^2 + 
  (0.5238095238095236` x0^2 + 0.11664236870396066` x0 x1 + 0.5873015873015873` x1^2) x2^2 + 
  (0.5238095238095237` x0^2 + 0.11664236870396083` x0 x1 + 0.5873015873015874` x1^2) x2^2 + 
  1.9999999999999996` x2^4 == 
  1.9999999999999996` x0^4 + 2.` x1^4 + 4.` x1^2 x2^2 + 1.9999999999999996` x2^4 + 
  6 x0^2 (0.5238095238095236` x1^2 + 0.5238095238095236` x2^2) + 
  x0^2 (0.857142857142857` x1^2 + 0.857142857142857` x2^2) +  
  x0 (1.166423687039609` x1^3 - 0.6998542122237649` x1 x2^2) + 
  2 x0 (-0.19440394783993475` x1^3 + 0.11664236870396069` x1 x2^2) + 
  x0 (-0.1944039478399347` x1^3 + 0.11664236870396072` x1 x2^2) + 
  x0 (-0.1944039478399347` x1^3 + 0.11664236870396077` x1 x2^2) + 
  2 x0 (-0.1944039478399347` x1^3 + 0.11664236870396083` x1 x2^2)]

Cheers, David

storluffarn

Posted 2013-10-13T10:51:27.903

Reputation: 97

Do not use bugs tag. It is only for confirmed by community bugs. – ybeltukov – 2013-10-13T11:43:34.547

@Artes I also thought that it is a bug, but FullSimplify just divide by very small number (it's not forbidden) that produces coefficients like 0.375. See also example in my answer. – ybeltukov – 2013-10-13T19:03:06.580

@ybeltukov That sounds reasonably, I guess that division is because of FullSimplify[... == ...] which is allowed. Anyway you should include all those remarks to your answer. – Artes – 2013-10-13T19:11:27.377

Answers

10

You need to be very careful of simplifying equations with numeric quantities. Compare:

Simplify[1.0 x == 0.9999999999999 x]
Simplify[1.0 x == 0.99999999999999 x]
x == 0
True

In the first case Simplify divide by very small number that produce x == 0. This division is allowed with Simplify[... == ...].

The same way FullSimplify[... == ...] (without Chop) in the OP's question produce

v8:

x0 (4.44089*10^-16 x0 x1^2 - 6.66134*10^-16 x1^3 + (8.88178*10^-16 x0 + 
   1.66533*10^-16 x1) x2^2) == 0

v9:

x0 (1. x0 x1^2 - 1.5 x1^3 + 2. x0 x2^2 + 0.375 x1 x2^2) == 0

This equations are the same except the factor 4.44089*10^-16.

Solution: you just need to change Chop@FullSimplify[... == ...] to Chop@FullSimplify[... - ...] == 0

v8:

True

v9:

True

ybeltukov

Posted 2013-10-13T10:51:27.903

Reputation: 41 907

Ah, of course. Well, I guess that solves the mystery... I guess some kind of implementation of Round should solve the problem.

I'll try not to misuse the bug tag in the future! – storluffarn – 2013-10-13T18:42:07.757