MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Simplification problem

  • To: mathgroup at smc.vnet.net
  • Subject: [mg104766] Re: [mg104755] Simplification problem
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Mon, 9 Nov 2009 05:44:48 -0500 (EST)
  • References: <200911081151.GAA25009@smc.vnet.net>

On 8 Nov 2009, at 20:51, olfa wrote:

> Hello mathematica community
> Having this system of equations:
> (z1==z2 && x*t==x1*t1)||(z1+x1*t1==z2+x2*t2)
> why a function like fullsimplify or booleanminimize doesn't simplify
> it into z1+x1*t1==z2+x2*t2?
> same question for (y1==y2 && t1== t2)||(t1/2^y1==t2/2^y2) why it is
> not simplified into t1/2^y1==t2/2^y2.
> is there another function that I can use?
> thank you.
>

I think I have answered very similar questions from you several times  
but you just ignore the answers and keep asking the same thing all  
over again.

The function to use is Reduce over the Reals (even if the result is  
more general, the algorithms used by Mathematica for such situations  
work over the reals). You will get a more complicated looking answer,  
but it actually "contains yours".

FullSimplify[
  Reduce[(z1 == z2 && x*t == x1*t1) || z1 + x1*t1 == z2 + x2*t2, Reals]]

  (x2 ==
     0 && ((z1 ==
         z2 && (x1 ==
           0 || (x != 0 && (t1 == 0 || t == (t1*x1)/x)))) ||
          (x1 != 0 && t1*x1 + z1 == z2 && (t1 != 0 || x == 0)))) ||
    (x2 != 0 && ((((t1*x1 + z1 ==
             t2*x2 + z2 && (x != 0 || (t1 != 0 && t2 != 0))) ||
                (t2 == 0 && x == 0 && t1*x1 + z1 == z2) || (x != 0 &&
            t == (t1*x1)/x &&
                   t1 != (t2*x2)/x1 && z1 == z2)) && x1 != 0) ||
          (x1 == 0 && ((t2 != 0 && t2*x2 + z2 == z1) ||
                (z1 == z2 && (t == 0 || t2 == 0 || x == 0)))) ||
          (t1 == 0 && t2 != 0 &&
        x == 0 && (z1 == z2 || t2*x2 + z2 == z1))))

The answer you see is a disjunction, corresponding to various terms  
being zero or non-zero. If you look at this carefully you will see  
that it does contain what you want:

x2 != 0 && ((((t1*x1 + z1 ==  t2*x2 + z2 && (x != 0 || (t1 != 0 && t2 ! 
= 0)))

Similarly in the second case:

  FullSimplify[
  Reduce[(y1 == y2 && t1 == t2) || t1/2^y1 == t2/2^y2, Reals]]

(t1 == 0 && t2 == 0) || (t1 == t2 && y1 == y2) ||
    (Log[2]*(y1 - y2) == Log[t1/t2] &&
       ((t1 < 0 && t2 < 0) || (t1 > 0 && t2 > 0)))

This is again essentially equivalent to the answer you wanted. You  
can't expect to get exactly what you wanted as the algorithms  
Mathematica uses are entirely different form the way you do this by  
hand.

Andrzej Kozlowski




  • Prev by Date: Re: Thikness of edges in a 3D graph
  • Next by Date: Re: Re: What is going on!?!
  • Previous by thread: Simplification problem
  • Next by thread: Re: Re: Simplification problem