MathGroup Archive 2008

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

Search the Archive

Reduce and Indeterminate

  • To: mathgroup at smc.vnet.net
  • Subject: [mg87766] Reduce and Indeterminate
  • From: Szabolcs Horvát <szhorvat at gmail.com>
  • Date: Wed, 16 Apr 2008 22:30:04 -0400 (EDT)
  • Organization: University of Bergen

If a complex number appears in an inequality, Reduce issues a warning:

Reduce[I > 0]

This is useful (to avoid mistakes).  But if Indeterminate appears in an 
inequality, Reduce will immediately say False:

Reduce[Indeterminate > 0]

While it is debatable what is the correct thing to do mathematically, I 
naively believe that it would be useful if Reduce at least gave a 
warning.  It is true that it is not a good idea to manipulate 
expressions completely blindly (without paying attention to what they 
contain), but some functions may return very large expressions ... and 
the main advantage of using computers is that they can do large and 
tedious calculations quickly.

What do MathGroup readers think about this?

Here's a somewhat artificial example:

In[1]:= Integrate[1/x, {x, a, b}]

Out[1]= If[(-Im[b] Re[a] + Im[a] Re[b])/(Im[a] - Im[b]) >=
    0 && ((Re[a/(-a + b)] >= 0 && a/(-a + b) != 0) ||
     Re[a/(a - b)] >= 1 || Im[a/(-a + b)] != 0), -Log[a] + Log[b],
  Integrate[1/x, {x, a, b},
   Assumptions -> ! ((-Im[b] Re[a] + Im[a] Re[b])/(Im[a] - Im[b]) >=
        0 && ((Re[a/(-a + b)] >= 0 && a/(-a + b) != 0) ||
         Re[a/(a - b)] >= 1 || Im[a/(-a + b)] != 0))]]

In[2]:= First[%]

Out[2]= (-Im[b] Re[a] + Im[a] Re[b])/(Im[a] - Im[b]) >=
   0 && ((Re[a/(-a + b)] >= 0 && a/(-a + b) != 0) ||
    Re[a/(a - b)] >= 1 || Im[a/(-a + b)] != 0)

In[3]:= Reduce[% && (a | b) \[Element] Reals]

Out[3]= False

Note that unlike Reduce, FullSimplify gives a warning:

In[4]:= FullSimplify[%%, (a | b) \[Element] Reals]

During evaluation of In[4]:= FullSimplify::infd: Expression (-Im[b] \
Re[a]+Im[a] Re[b])/(Im[a]-Im[b]) simplified to Indeterminate. >>

Out[4]= Indeterminate >=
   0 && (Im[a/(-a + b)] != 0 ||
    Re[a/(a - b)] >= 1 || (a/(a - b) != 0 && Re[a/(-a + b)] >= 0))

In[5]:= Reduce[Rest[%] && (a | b) \[Element] Reals, {a, b}]

Out[5]= (a < 0 && (b < a || a < b <= 0)) || (a >
     0 && (0 <= b < a || b > a))



  • Prev by Date: Re: List re-arrangement question
  • Next by Date: Re: Directory of Mathematica Add-Ons
  • Previous by thread: Re: RE: Coordinates of vertices
  • Next by thread: Re: Reduce and Indeterminate