MathGroup Archive 2004

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

Search the Archive

Re: Inappropriate Domain Calculation Warnings

On 19 Jan 2004, at 10:15, Harold Noffke wrote:

> MathGroup:
> Here's an example of Solve with a user-specified Domain.  It is
> accompanied by a Warning which is inappropriate for the specified
> Domain.
>     In[1]:= Solve[(2^53 == 10^x), x, Element[x, Reals]] // N
>     Solve::ifun: Inverse functions are being used by Solve, so some
> solutions may not be found; use Reduce for complete solution
> information.
>     Out[1]= {{x -> 15.9546}}
> Given the Domain spec that x is a Real number, I would think this
> Solve::ifun: message would not propagate to printout -- i.e., that it
> would be suppressed.
> This is how I feel a new user would expect Mathematica 5.0 to work.
> Regards,
> Harold
The question is: where did you get the idea that Solve can use domain 
specifications? Certainly not from the documentation. Mathematica is 
intuitive but not as intuitive so that you can dispense entirely with 
reading the documentation. If you are looking for a program that a new 
user can use without any learning than you have chosen the wrong one.

As the message you got tells you, the function to use is Reduce. If you 
do that you get

Reduce[2^53 == 10^x, x, Reals]

x == Log[9007199254740992]/Log[10]

The reason for this difference between Solve and Reduce has already 
many times been explained on this list. They use essentially different 
methods. Solve is more limited in the kind of equations it can deal 
with (in particular you can't restrict it to only real solutions)  but 
in those cases which it can deal with it should be more efficient than 
Reduce. One could quibble about the names of these functions but they 
are part of Mathematica's legacy.

Andrzej Kozlowski
Chiba, Japan

  • Prev by Date: Tail recursion and local functions
  • Next by Date: Re: Pipes Inside Mathematica?
  • Previous by thread: Inappropriate Domain Calculation Warnings
  • Next by thread: Loading a Package