Re: Zero divided by a number...

*To*: mathgroup at smc.vnet.net*Subject*: [mg52072] Re: Zero divided by a number...*From*: "David W. Cantrell" <DWCantrell at sigmaxi.org>*Date*: Tue, 9 Nov 2004 01:37:38 -0500 (EST)*References*: <20041103190554.052$Ay@newsreader.com> <cmcn2q$ihh$1@smc.vnet.net> <200411070604.BAA18132@smc.vnet.net> <cmnap3$7v5$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

Andrzej Kozlowski <akoz at mimuw.edu.pl> wrote: > On 7 Nov 2004, at 15:04, David W. Cantrell wrote: > > > BTW, concerning whether an improper element of an extended number > > system should be called a "number" or not, it might be noted that: > > Floating-point arithmetic is surely the most widely used number system > > in the world, in terms of the number of computations performed per day. > > There is an internationally accepted standard for that arithmetic. The > > standard clearly distinguishes between those floating-point objects > > which are numbers and those which aren't (the NaNs). According to > > the standard, -Infinity and +Infinity are numbers (while things such > > as 0*Infinity yield NaN). > > According to Mathematica: > > NumericQ[ComplexInfinity] > > False > > NumericQ[Infinity] > > False I was either unaware or had forgotten that Mathematica considers ComplexInfinity and Infinity to be nonnumeric, so thanks for pointing that out. And knowing that can indeed be important when programming in Mathematica. But as far as _mathematics itself_ is concerned, I had already said "Seriously, both 0 and ComplexInfinity are quite peculiar, no doubt. And if you don't want to call ComplexInfinity a number, that's just fine. But it's essentially irrelevant whether we call it a 'number' or not. It's an element of C*, and what's important is knowing what you can (and can't) do with it." On second reading, perhaps it was not clear that I was talking about mathematics itself, rather than Mathematica, but C* was what I had in mind when I wrote that. > It is to say the least controversial if "numbers" are what complex > analysts deal with. It would be absurd to suggest that "numbers" be _restricted_ to what's used in complex analysis. But I gather that that is not your point. > ComplexInfintiy and Infinity do not belong to any > family of numbers known to number theorists (who ought to be the people > who know best what numbers are), e.g. algebraic numbers, transcendental > numbers, or even computable numbers. Number theory is a specific branch of mathematics, as you know. There are types of objects used in mathematics which are often called numbers but which are not normally considered in number theory itself. Cantor's cardinal and ordinal numbers come to mind, for example. DrBob has objected previously in this thread that ComplexInfinity doesn't behave like a number; I'd say, rather, that it doesn't behave like a _finite_ number. Transfinite numbers do not behave like finite numbers; that's to be expected, of course. The mathematicians' drinking song "Aleph_nought bottles of beer on the wall" never ends (well, at least, in theory; in practice, we'd get too drunk to continue singing, I suppose). And 1 + omega is not the same as omega + 1. Earlier in this thread, you said "The word 'number' is ambiguous..." That's certainly true. There is no generally accepted definition of number. There are, of course, generally accepted definitions for _specific_ number systems. > A point on the Riemann sphere is not a "number". Are you being pedantic? If so, I agree with you. We may say that the Riemann sphere is merely a way to visualize C*, just as the number line is a way to visualize R. And no point on the line or the sphere _is_ a number. But there is an obvious _correspondence_ between the points of the line and the elements of R and between the points of the sphere and the elements of C*. Each point on the Riemann sphere, except its "North Pole", corresponds with an element of C, that is, with a complex number. The North Pole corresponds with oo, an element of C*. Whether we wish to call that element a "number" or not is essentially irrelevant, as I've said before. Please note that I have not said anywhere in this thread that I think it _should_ be called a number. It's adequate, as far as I'm concerned, merely to say that oo is an element of C*. > But I found this reply of yours to Bob particulalry incredible : > > >> ComplexInfinity isn't a number if you can't do > >> arithmetic with it, > > > > But you can do arithmetic with it. > > Really? And presumably algebra too? I am curious how, Really! (And I can't imagine why you thought that was "particulalry incredible".) In C*, we have oo + 1 = oo and 1/oo = 0, for example. That's doing arithmetic involving oo. Correspondingly, in Mathematica, we have In[1]:= ComplexInfinity + 1 Out[1]= ComplexInfinity In[2]:= 1/ComplexInfinity Out[2]= 0 > given that this > is the only "number" about which Mathematica does not even know if it > is equal to itself: First, note that I never said it was a number. And as you pointed out above, Mathematica considers it to be nonnumeric. > ComplexInfinity==ComplexInfinity > > ComplexInfinity==ComplexInfinity In C*, oo = oo is true, of course. The fact that Mathematica cannot at present decide about ComplexInfinity==ComplexInfinity is, in my opinion, a deficiency. But of course, the designers may have had a good reason, unknown to me, for leaving ComplexInfinity==ComplexInfinity unevaluated. > But then perhaps analysts mean something different by "arithmetic" and > "algebra" from the rest of us ;-) Not that I'm aware of. Perhaps it would be helpful if I discuss the construction of C*. I'll also construct a more flexible system, much like the one that Mathematica uses. Of course, to keep this post to a reasonable length, this must be a discussion "in a nutshell", just a bare-bones outline. I hope that readers will be able to follow it if they're familiar with the constructions of the reals from the rationals via Dedekind cuts and via equivalence classes of Cauchy sequences. (BTW, the constructions outlined will not be aesthetically optimal IMO, but rather optimal for speed of presentation here.) Assume that the positive rationals have already been constructed. We may then construct the nonnegative extended reals, [0, +oo], from the positive rationals either by cuts or by equivalence classes of appropriate rational sequences. Bertrand Russell used the former construction with the cut having lower class {q | q in Q, q > 0} being "the real number infinity", to use his own words. For the other method of construction, we proceed as usual except that we also include an equivalence class which consists of all rational sequences which increase without bound. That equivalence class is +oo. [Those reading closely may protest that the sequences in that equivalence aren't Cauchy. But in fact, if desired, they can easily be made Cauchy simply by using an appropriate metric.] Note that, regardless of the method of construction chosen, +oo is the same type of object as the nonnegative reals which were constructed along with it. In that light, it would certainly not be unreasonable to call +oo a number. The (signed) reals, R, may then be constructed easily from the nonnegative reals. An extended complex number system may then be constructed in which the elements are equivalence classes of ordered pairs (r, theta) with r in [0, +oo] and theta in R, with ordered pairs (r, theta_1) and (r, theta_2) being in the same equivalence class whenever theta_1 = theta_2 mod(2 Pi). This system should in essence be the same as Mathematica's system of complex numbers together with _directed infinities_. (The only web reference I know to such a system is "A family of compactifications accounting for all arguments of infinity" by Gingold and Gingold at <http://www.slackworks.com/~yotam/gammasphere/metric/gammasphere.pdf>.) OTOH, if we lump all of the ordered pairs having r = +oo into a single equivalence class (without regard to theta), we get C*, which should in essence be Mathematica's system of complex numbers together with ComplexInfinity. [Note of course that, in C*, the undirected infinity oo is defined as a specific equivalence class, and so there is no doubt that oo = oo is true. That's why I'm surprised that Mathematica does not assert that ComplexInfinity==ComplexInfinity is true.] The system which Mathematica actually uses is equivalent neither to C with just directed infinities nor to C with just the undirected infinity. Rather, Mathematica uses a "hybrid" system having both the directed infinities and the undirected infinity available. This is laudable IMO, allowing a specific directed infinity to be given whenever feasible (and thereby retaining as much information as possible), but also allowing the undirected infinity to be given in cases when no direction can be specified. In this brief outline, I haven't yet mentioned the definitions of the arithmetic operations, but they can be defined in fairly obvious ways. Let's go back to the system [0, +oo], for example, and consider, say, 1/(+oo). To compute that, take a representative sequence <a_n> of nonnegative rationals in the equivalence class 1 and a representative sequence <b_n> of nonnegative rationals in the equivalence class +oo. The desired quotient is then the equivalence class containing the sequence <a_n/b_n>. Since a_n converges to 1 and b_n increases without bound, a_n/b_n must converge to 0. Thus, 1/(+oo) = 0 in the system [0, +oo]. But what if we similarly attempt to compute, say, 0/0. We must consider two representative sequences, <a_n> and <b_n>, in the equivalence class 0, and look at <a_n/b_n>. Alas, that sequence may very well not reside in _any_ of the equivalence classes constituting [0, +oo], and so we must say that 0/0 is undefined in this system. In floating-point arithmetic, when this situation arises, the result is called NaN (Not a Number); in Mathematica, it's called Indeterminate. Someone had asked me, in a private email concerning this thread, if such systems aren't fields, then what are they? Well, for a system like C* with another element (like NaN or Indeterminate) adjoined to handle cases such as 0/0, the term is "wheel" (and that extra element is often called "bottom"). The best source (known to me) of information on wheels is Jesper Carlstrom's thesis "Wheels -- On Division by Zero", available at <http://www.matematik.su.se/~jesper/research/wheels/>. Sorry that I didn't have time to go into more detail. David W. Cantrell

**Follow-Ups**:**Re: Re: Zero divided by a number...***From:*Garry Helzer <gah@math.umd.edu>

**References**:**Re: Zero divided by a number...***From:*"David W. Cantrell" <DWCantrell@sigmaxi.org>

**Re: Adding Vectors -- Newbie help please**

**fourier ( FFT )**

**Re: Re: Zero divided by a number...**

**Re: Re: Zero divided by a number...**