Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2004
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2004

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

Search the Archive

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


  • Prev by Date: Re: Adding Vectors -- Newbie help please
  • Next by Date: fourier ( FFT )
  • Previous by thread: Re: Re: Zero divided by a number...
  • Next by thread: Re: Re: Zero divided by a number...