[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]]?
Forget to forward to math group. On Thu, Sep 11, 2008 at 7:46 PM, Peng Yu <pengyu.ut at gmail.com> wrote: > On Thu, Sep 11, 2008 at 7:04 PM, Andrzej Kozlowski <akoz at mimuw.edu.pl> wrote: >> >> 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? > > I don't know the reason. That is why I ask. I think that it would be a > little offensive if you ask some other people in this way. Anyway, I > don't really care. > > There are multiple equivalent forms for any inverse trigonometric > functions. If there is a way to specific which form to choose for any > inverse trigonometric function under any condition (just like what > human can do), then the problem is solve. Therefore, I thought it is > just an software issue. > >>> 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. > > Now, I understand it is an algorithmic issue, which might not be easy > to solve absolutely. But can there be some heuristics? > >>> 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] > > I have been doing this. But I want a generic way. I feel tedious to > specify the replacement rules each time. Consider the following case > that is buried in some other big expressions that spread pages. > Sqrt[some_complex_expr1^2 + some_complex_expr2^2] > >> 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. > > My question was raised because I had a very complex expression, which > is too long to understand. The case in the title is just one little > sub expression in that I could pinpoint in that long expression. I > don't know the simplest form of the long expression. But it is of > course not the simplest, because I pinpoint the sub expression that > can be made simpler. > > I could do this by hand, but then why I need Mathematica? >