Re: Re: TraditionForm Appears to be Inconsistent
- To: mathgroup at smc.vnet.net
- Subject: [mg99673] Re: [mg99606] Re: TraditionForm Appears to be Inconsistent
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Sun, 10 May 2009 05:20:44 -0400 (EDT)
- References: <9293149.1241693402776.JavaMail.root@n11> <gu0bal$fsj$1@smc.vnet.net> <200905090720.DAA29931@smc.vnet.net>
As often the main point here is that computer algebra programs do not exist primarily to produce a familiar looking and pleasing output. Of course, other things being equal it is not a bad thing if they do so, but often other things are not equal. And the main "other thing" in this case is performance of algebraic transformations and simplifications. I am always surprised (and amused) to see how many people with technical knowledge and skills seem not to have noticed that computers are not human and they have to work by means of general and often rather "dumb" algorithms ("dumb" in the sense that they often ignore the existence of a much simpler way of achieving the same outcome). I am even more surprised to see that there are also some users who seem to believe that certain features of Mathematica are there because of whims of the programmers or even their wish to annoy (certain?) users. Frankly, this sounds like a great idea to me and if I were a Mathematica developer it might even be true but I am sure that the nice people working for Wolfram Research could not be farther from this thought. So if not to annoy users or to satisfy their own passion for the bizarre, why do they do it? Would you believe that there is a research and reason behind this? Concerning the example that causes so much irritation: note that actually Mathematica does not have any particular preference for Csc over Sin or the other way round. After all: 1/Csc[x] Sin[x] but on the other hand: 1/Sin[x] Csc[x] It should not take a genius to notice that what this two transformations applied by Mathematica automatically, i.e. without Simplify being called, have in common, is that they do what most clever elementary school children do: avoid fractions if they can be avoided. The reason for that is that Mathematica's general algorithms perform worse in the presence of fractions than when dealing with polynomials (and here I am referring to "polynomials" in a rather general sense which admits the variables them selves to be transcendental functions such as sin). This phenomenon is actually a special case of the general principle of all computer algebra - expressions should be reduced to "standard forms" (or normal or canonical forms) as soon as possible. This principle derives form the fact that the most important and most difficult task in computer algebra is "showing" that two expressions are equal, or that one expression is 0. Now, obviously the more complicated the expression the more complicated this problem becomes. If even very simple expressions were allowed to enter into more complex ones in different (but equivalent) forms, when they actually ought to cancel, then after certain transformations are applied, it may no longer be possible to see that they should have been cancelled in the beginning. So the way to prevent this happening is to reduce them as soon as possible to a single "standard form" and cancel them as soon as one gets the chance. Most, if not all, of the simplifications that Mathematica applies automatically consist of this sort of "reduction to standard form". Their purpose lies in computer algebra, not in the desire to produce output in a form pleasing to the majority of "science and engineering professionals" or to annoy them. These "rules" are not made up by Mathematica programmers as they happily go along programming. That does not mean that all standard forms are necessarily unique: there has always been some dispute about the best canonical forms for certain types of expressions because often choosing a form involves a conflict of values - for example it is much easier to cancel out terms in polynomial expressions if they are always expanded but expanded expressions take up much more memory. Think of (x+y)^10000. This is the reason why Mathematica does not automatically expand polynomials and does not immediately notice that (x + y)^2 - x^2 - y^2 - 2*x*y -x^2 - 2*x*y + (x + y)^2 - y^2 is actually 0. But in most other cases canonical expressions are chosen to facilitate the solution of the "zero equivalence problem". This problem, by the way, has been proved to be unsolvable for any sufficiently rich class of functions involving just elementary functions (by D.Richardson in Journal of Symblic Logic 1968). Thus one should not be surprised that there are expressions involving only elementary functions give zero when any numerical value is substituted for the variable but Mathematica is unable to show that they are equal. What is actually surprising is that this happens as rarely as it does. And it this that explains why Mathematica does all these "irritating simplifications". If all you want is to get the sort of output you know and love, than you should obviously be using a tool, that is meant for this purpose, e.g. TeX. Andrzej Kozlowski On 9 May 2009, at 16:20, AES wrote: > In article <gu0bal$fsj$1 at smc.vnet.net>, > "David Park" <djmpark at comcast.net> wrote: > >> >> One just has to get used to what simplifications Mathematica >> automatically >> does and which ones it doesn't do. Some of the automatic ones are >> annoying, >> such as 1/Sin[x] -> Csc[x]. >> > > This particular one has always been particularly puzzling for me. > In my > experience at least, more or less everyone uses Sin and Cos in writing > out any expressions containing these functions, and practically no one > ever uses Sec and Csc. > > Moreover, I'd make a small bet that if you took a large random > sample of > science and engineering professionals, approaching half of them would > get the relationships between Sin and Cos, and Sec and Csc, wrong. > ("Let's see -- it's COsine and COsecant, and then Sin and Secant -- > right?") > > Is there some fundamental mathematical or logical reason behind > Mathematica's choice? Or some strongly embedded or historical > convention in the field of symbolic algebra that leads to this being > done? >
- References:
- Re: TraditionForm Appears to be Inconsistent
- From: AES <siegman@stanford.edu>
- Re: TraditionForm Appears to be Inconsistent