MathGroup Archive 2008

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

Search the Archive

Re: Re: How to simplify ArcCos[x/Sqrt[x^2+y^2]] to Pi/2-ArcTan[x/Abs[y]]?

On 12 Sep 2008, at 02:45, Peng Yu wrote:

> I agree you point. But I don't know the exact algorithm how
> Mathematica manipulate expressions, and I don't know how to improve it
> algorithmically in a general way.
> Like suggesting the improvement to all other softwares, users can only
> tell the software developers what the users want. Although the users
> provide somewhat ambiguous or not exact information, it is up to the
> developers to figure out what the users mean. The users' suggestion
> might only be some point cases, it is up to the developer to see if
> these cases can be generalized. Therefore, the communication between
> the developers and the users become important.

Of course, but... Do you have any reason to think Mathematica  
developers do not know it would be a good thing if Mathematica could  
transform inverse trigonotmetric functions (or other mathematical  
expressions) into equivelent forms? Do you really think that the  
reason it can't is because the developer's have not been paying  
attention to this matter?
Similarly, do you think that mathematicians do not know that it would  
be a good idea to prove the Riemann hypothesis and that the reason it  
has not yet been done so is their lack of trying?

> For right now, I think Mathematica shall at least be able to do all
> the elementary manipulations in the following webpage ragarding
> inverse trigonometry functions, which I don't see can be done by
> Mathematica now (correct me if I'm wrong).

It is completely trivial to implement all these rules in Mathematica  
using pattern matching and you should be able to do it yourself with  
just a minimal knowledge of Mathematica. So this is not the problem.  
The problem is to implement them in such a way that not only  
expressions that match exactly the ones on this page are transformed  
but also an infinite class of essentially equivalent expressions which  
are mathematically equal but do not match the same pattern. For this  
one needs general mathematical algorithms and finding such algorithms  
is a problem in mathematics and not a problem in software development.

> Another thing that I want is that it shall be able to manipulate
> Sqrt[x*x+y*y] to x *Sqrt[1+(x/y)^2].

One way to do this and many similar examples is:

Simplify[Sqrt[x^2 + y^2] /. y -> k*x, x >= 0] /. k -> y/x
x*Sqrt[y^2/x^2 + 1]

On the other hand, computer algebra programs are not really meant, or  
at least not principally meant, to transform expressions from one form  
to another already known form. Since you already know the answer you  
want, you can do the "transforming" by writing an appropriate pattern  
and using replacement, which is essentially the same as doing this "by  
hand", but can be more efficient in cases where you have to perform  
many similar replacements.  The true purpose of functions such as  
Simplify and FullSimplify is to transform complex expressions into  
canonical, "simpler" forms in situations when you do not already know  
exactly the form you want and only know that you want a form that is  
"simpler" than the one you have got. It would be a waste of resources  
to devote much time and energy on improving the abilities of  
Mathematica to give users the answers they already know.

Andrzej Kozlowski

  • Prev by Date: Re: Simulate a finite-state markov process
  • Next by Date: Re: How can you get the list of all used variables and functions
  • Previous by thread: Re: How to simplify ArcCos[x/Sqrt[x^2+y^2]] to Pi/2-ArcTan[x/Abs[y]]?
  • Next by thread: Re: How to simplify ArcCos[x/Sqrt[x^2+y^2]] to Pi/2-ArcTan[x/Abs[y]]?