[Date Index] [Thread Index] [Author Index]
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). > > http://en.wikipedia.org/wiki/Inverse_trigonometric_function 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