Old page: see newer page for a (hopefully) clearer exposition.

What are the complex numbers ?

They're a model of the field generated by rotations and enlargements in two (real) dimensions. They're the algebraic closure of the reals – everything you need to be able to solve all polynomial equations with real coefficients. They're the algebra you get out of the two-dimensional (real) plane by presuming commutativity, associativity and distributivity, then chosing to identify one member of a basis with the real number 1 and constrain the other's square to be −1. However, each of these requires some motivation and explanation.

Before I delve into deeper theory, let me first give an over-view of some salient properties by describing the most intuitively convenient form of the complex numbers, as an algebraic abstraction from the linear transformations, of the two-dimensional real plane, that preserve (the origin, since they are linear, and) both the magnitude and orientation of angles.

Each such transformation has the form (: [a.x −b.y, a.y +b.x ] ← [x, y] :) for some real a and b; and can be expressed as a scaling, by c = √(a.a +b.b), composed with a rotation (through an angle whose Sin and Cos are b/c and a/c, respectively), each centred on the origin. If we compose two such transformations, it doesn't matter what order we compose them in; the end result scales by the product of their two scalings and rotates through the sum of their respective rotations' angles. The pure scalings (with b = 0) serve as a model of the real numbers, with composition faithfully modelling multiplication. The half-turn rotation is exactly the same transformation as scaling by −1 and any other negative scaling can be expressed as a positive scaling composed with the half-turn. Aside from the zero mapping, each transformation has an inverse – scale by the inverse of its scale factor, rotate through the reverse of its angle.

As may be seen from their matrix representaions, adding such
transformations pointwise yields another such; and composing such a sum with
another such tranformation yields the same as would be obtained by composing
this other with each of the summed transformations separately, then summing
the results. Thus the natural pointwise addition of mappings of a linear
space, taken with the composition of such mappings, lets us combine our
selected transformations just as if they were numbers

, like the reals,
with composition understood as multiplication

. Formally, these
transformations form a field, known as the complex numbers.

When we construe rotations as numbers, in this sense, we find that
the square

of any rotation is simply rotation through twice its angle;
the equivalence of the −1 scaling and the half-turn rotation thus casts
the rotations through a quarter turn, in either sense, as square roots

of −1. Indeed, not only does the polynomial equation x

have these two solutions for x, but ^{2}
+1 = 0*every* polynomial
equation in this field has solutions and every polynomial can be written as a
product of simple degree 1 polynomials. This proves to be a highly useful
property.

If we give a name, commonly i, to one of the quarter turns, say (: [−y, x] ←[x, y] :), then we can obtain any other complex number as the sum of a scaling (which we can construe as a real number) and some real multiple of i; indeed, the typical transformation, given above as (: [a.x −b.y, a.y +b.x ] ← [x, y] :), with a and b real, is simply a +b.i, when we interpret each real number as synomymous with scaling by that real number. However, notice that we have two quarter-turn rotations to chose from; we can chose either as i, without changing anything about the structure. Switching which one we chose merely replaces i with −i everywhere it appears in whatever we work out. We thus find that the mapping ({complex}: a −i.b ← a +i.b; a, b in {reals} :{complex}) preserves the algebraic structure of the complex numbers; this mapping is known as (complex) conjugation and commonly denoted *, so *(a +i.b) = a −i.b for every real a and b.

For real a, b we can multiply a+i.b by its conjugate to get
(a+i.b).(a−i.b) = a.a +i.b.a −a.i.b −i.i.b.b = a.a +b.b, the
(positive real) square of the scale factor needed to express a+i.b as the
composite of a scaling and a rotation. For any complex z, the positive square
root of this product, √(z.*z), is known as the *modulus* of
z. When z = a+i.b, we describe a = (*z+z)/2 as the real part

of z and
b = i.(*z−z)/2 as the imaginary part

of z. These are the
components, respectively parallel and perpendicular to the input, of the
output of the transformation z represents, when its input is a unit
vector.

Just as the real number continuum supports differentiation and the solution of differential equations, so too does the two-dimensional complex number continuum, with one twist. Consider a function ({complex}: Z :{complex}); we can necessarily write it, in terms of a pair of real-valued functions f, g from the two-dimensional real plane to the reals, as Z(x+i.y) = f([x,y]) +i.g([x,y]), for real x, y. At any [x,y] at which f and g are differentiable, we can differentiate this as a function from the two-dimensional real plane; thus, if Z is to be differentiable, its derivative at [x,y] must satisfy:

- (: X.(∂f([x,y])/∂x +i.∂g([x,y])/∂x) +Y.(∂f([x,y])/∂y +i.∂g([x,y])/∂y) ← X+i.Y; X, Y real :)

However, Z is not a mapping from the real two-plane to itself; it is a mapping from the complex numbers to itself; as such, its derivative is constrained to be a complex-linear mapping from the complex numbers to itself, rather than just a real-linear mapping from the real two-plane to itself. This means that if we scale its input by some complex number, its output must likewise be simply scaled by that complex number. Giving it 1 as input, we get the result for X=1, Y=0; multiplying this by i must give, simply, the result of giving it i as input, which is its value for X=0, Y=1. Thus we obtain

- i.(∂f([x,y])/∂x +i.∂g([x,y])/∂x) = ∂f([x,y])/∂y +i.∂g([x,y])/∂y, i.e.
- ∂f([x,y])/∂x = ∂g([x,y])/∂y and
- −∂g([x,y])/∂x = ∂f([x,y])/∂y

i.e. a ({complex}::{complex}) function is only complex-differentiable
if: its real part's variation with the real part of its input matches its
imaginary part's variation with the imaginary part of its input; and its real
part's variation with the imaginary part of its input is exactly opposite to
its imaginary part's variation with the real part of its input. This is
trivially satisfied for the identity (with derivative 1), by any constant
mapping (with derivative 0) and by any sum of mappings each of which,
separately, satisfies it. It is equally trivially *not* satisfied by
conjugation. The details of complex multiplication ensure (although the
details are mildly laborious) that the product of two complex-differentiable
functions is also complex-differentiable, from which (given the foregoing) we
can infer that all polynomials are complex-differentiable.

As for the reals, we can pose differential equations and find solutions in the complex numbers; in particular, the differential equation f' = f with f(0) = 1, whose unique solution on the reals is the natural exponential function f = exp, turns out to have a solution in {complex}. Naturally, this agrees with exp on {reals}, represented by the scalings, so we can consider it the extension of exp to {complex}, wherein it turns out to be periodic, with period 2.π.i; for real x, y, exp(x +i.y) = exp(x).(cos(y) +i.sin(y)).

Anywhere we can do addition, we can ask which relations on the things
being added respect addition

; I'll call these real-linear; given
additions on collections U and V (so a+b is in U for all a, b in U and x+y is
in V for all x, y in V), a mapping (U: f |V) is real-linear iff f(x+y) = f(x)
+f(y) for all x, y in V (here f(x) takes the rôle of a, with f(y) as b;
more generally, a relation (U: r :V) is real-linear iff: r relates x to a
and y to b

implies r relates x+y to a+b

; the reverse of any
real-linear relation is a real-linear relation). A mapping (V: s |V) is
a real scaling

iff it commutes with every real-linear relation (V:f:V),
i.e. f&on;s = s&on;f. Composing two scalings necessarily yields a scaling; and
– since each is a real scaling and the other is, in particular, real
linear – they commute; so I'll write a simple . in place of &on; when
the relation on either side of it is a scaling.

There's a natural embedding of the naturals in {real scalings (V:|V)} as (: (V: sum({v}:|n) ←v :V) ←n :{naturals}). This gives us a skeleton for the real scalings (V:|V). We can compose these: the composite agrees with the multiplication natural to the naturals, i.e. sum({sum({v}:|n)}:|m) = sum({v}:|n×m) with × (somewhat extravagantly) denoting natural multiplication (i.e. repeat(m)&on;repeat(n) = repeat(m×n)). Since I'll be treating a natural, n, as synonymous with (V: sum({v}:|n) ←v |V), I can use . rather than × for multiplication hereafter; I want to reserve × for the tensor calculus.

The addition on V induces one on {mappings (V:f|A)}, for any collection A
(e.g., for our scalings, A is V), defined by (V:f|A)+(V:g|A) = (V: f(a)+g(a)
←a |A), which (in particular) makes f+g real linear when we have an
addition on A for which f and g are real linear. [More generally, on
relations, I'll have (V:f:A)+(V:g:A) relate: u+v to a whenever f relates u to
a and g relates v to a; u to a whenever f relates u to a and a isn't a right
value of g; v to a whenever g relates v to a and a isn't a right value of f;
the implicit padding with zeros makes

it possible to add lists of
things without having to insist they have the same length, for example; and to
use an atomic relation ({x}| |{i}) = x←i, with i natural and x addable,
as if it were a list of any length greater than i, having x in position i and
zero in all other positions.] Provided every positive natural scaling is
(V||V), i.e. {n.x: x in V} = V for every positive natural n, the reverse of
any positive natural scaling is a real scaling; any sum or composite of real
scalings is a real scaling; we thus obtain the positive rationals embedded in
the real scalings.

I need to establish that the positive rationals are dense

in the
positive real scalings, i.e. that the real scalings have an order induced from
the one on the naturals, via the positive rationals; and that, for every real
scaling s, s.s > the zero scaling, (: sum({v}:|0) ←v :) with 0 being
the natural {}, so any list (:|0), including ({v}:|0) for any v, is just the
empty list [], whose sum (using V's addition) is V's additive identity (a
third entity entitled to the name zero or 0). If the real scalings don't
include negatives, we can induce them by additive completion (provided we can
show the addition is cancellable, for which it should suffice that V's
addition is cancellable).

Once I have real scalings, I can form lists of real scalings. Since a
list is just a mapping (from a natural), we can use the addition induced above
(with A as a natural) to induce an addition on such lists, establishing a
framework which incidentally suffices to describe simplices of arbitrary
finite dimension. Any scaling, s, of V induces a scaling (: (: s.f(i) ←i
:n) ←(:f|n) |{lists ({scalings of V}::)}), which I shall treat as
synonymous with s, i.e. I'll write s.f for (: s.f(i) ←i :n). Likewise,
any scaling on {lists of scalings} serves as a scaling on {scalings of lists
of scalings} and so on *ad nauseam*; this will eventually surface as the
underlying truth of the tensor algebra.

Now, on {lists ({scalings}:|n)}, any permutation (n|p|n) induces (: f&on;p
← ({scalings}:f|n) :{lists}), which is manifestly a real linear monic
mapping. For a real linear map, s from {lists ({scalings}:|n)} to itself, to
be a scaling (of lists of scalings), it must commute with such a
permutation-induced real linear isomorphism. It must also commute with (:
(:f:u) ←f :) for any subset u of n whence s(:f:u) = (:s(f):u), so s(f)'s
entry at position i depends on f(i), for each i in n, but on no other output
of f. Thus s is diagonal

: we can write it as s = (: (: S(i).f(i)
←i |n) ←f :) for some list ({scalars}: S |n).

Thus s&on;(: f&on;p ←f :) maps f to s(f&on;p) = (: S(i).f(p(i)) ←i |n) while (: f&on;p ←f :)&on;s maps f, via s(f), to s(f)&on;p = (: S(p(i)).f(p(i)) ←i |n). For s to commute with (: f&on;p ←f :) we must thus have S(i) = S(p(i)) for all i in n; for s to be a real scaling (of lists of real scalings) this must hold true for every permutation (n|p|n), so we may infer that S is constant and s is simply the real scaling on lists of real scalings induced by multiplying each real scaling in the list by a fixed scaling. Thus, somewhat laborously, we find a natural isomorphism between S = {real scalings (V:|V)} and {real scalings ({lists (S::)}:|{lists (S::)})}.

Now look at C = {lists ({real scalings (V:|V)}: |2)} and notice that the
only permutations of 2 are the identity, [0,1], and the minimal transposition,
[1,0]. These induce the linear maps (C| u←u |C) and (C| [t,s]←[s,t]
|C), the identity (a.k.a. C itself) and reflection in the principal
diagonal

, i.e. in the line {[s,s]: (V:s|V) is a scaling}. Provided we
have additive completion (hence negative scalings) in V, we obtain:

- −1 = (C: [−s,−t] ← [s,t] :C), (−1)&on;(−1) = (: [s,t] ← [s,t] :) = 1
- i = (C: [−t,s] ← [s,t] :C), i&on;i = (: [−s,−t] ← [s,t] :) = −1
- −i = −1.i, (−i)&on;(−i) = −1, (−i)&on;i = 1
- conj = (C: [s,−t] ← [s,t] |C), conj&on;conj = 1

each of which is real linear (C||C), with 1 and −1 scalings and i&on;conj = (: [t,s] ←[s,t] :) = conj&on;(−i) as the other permutation-induced real linear isomorphism. Using i and −i we can establish a pair of real linear mappings com = ({linear (C:|C)}: s.1 +t.i ←[s,t] |C) and anti = (: s.1 +t.(−i) ←[s,t] |C), so that anti = com&on;conj and (as conj is self-inverse) com = anti&on;conj. Then

- com([s,t])&on;anti([a,b])
- = (s.1+t.i)&on;(a.1+b.(−i))
- = s.(a.1+b.(−i)) +t.(a.i+b.1)
- = (s.a+t.b).1 +s.b.(−i) +t.a.i
- = (s.a+t.b).1 +(t.a −s.b).i

and, in particular,

- com([s,t])&on;anti([s,t]) = (s.s+t.t).1 +s.t.(−i+i) = (s.s+t.t).1.

while

- com([s,t])&on;com([a,b])
- = (s.1 +t.i)&on;(a.1 +b.i)
- = (s.a −t.b).1 +(s.b +t.a).i, and
- com([s,t],[a,b])
- = (s.1 +t.i)([a,b])
- = s.[a,b] +t.[−b,a]
- = [s.a −t.b, s.b +t.a], so
- com(com([s,t],[a,b]))
- = (s.a −t.b).1 +(s.b +t.a).i
- = com([s,t])&on;com([a,b])

i.e. com(com(u,v)) = com(u)&on;com(v) for u, v in C. This is exactly the associativity condition needed to ensure that we can pull back a multiplication on C, with com(u,v) serving as u×v. Meanwhile,

- anti([s,t])&on;conj
- = (s.1 −t.i)&on;conj
- = s.conj −t.i&on;conj
- = s.conj +t.conj&on;i
- = conj&on;com([s,t])
i.e. anti(u)&on;conj = conj&on;com(u) so com(u)&on;conj = conj&on;anti(u), since conj is self-inverse; likewise, com(conj(u)) = anti(u) = conj&on;com(u)&on;conj , and

- anti(u)&on;anti(v)
- = com(conj(u))&on;com(conj(v))
- = com(com(conj(u),conj(v)))
- = com(anti(u,conj(v)))
- = com((anti(u)&on;conj)(v))
- = com(conj(com(u,v)))
- = anti(com(u,v))
- com(u)&on;anti(v)
- = com(u)&on;com(conj(v))
- = com(com(u,conj(v)))
- = com((com(u)&on;conj)(v))
- = com(conj(anti(u,v)))
- = anti(anti(u,v))
- anti(u)&on;comm(v)
- = com(conj(u))&on;comm(v)
- = com(com(conj(u),v))
- = com(anti(u,v))

i.e., for u, v in C,

- com(com(u,v)) = com(u)&on;com(v)
- com(anti(u,v)) = anti(u)&on;com(v)
- anti(anti(u,v)) = com(u)&on;anti(v)
- anti(com(u,v)) = anti(u)&on;anti(v)

They're a variety of scalar (i.e. number) and they aren't all real. The
reals I can get at, for any additive context V, as the (V|:V) which respect
addition and commute with every (V|:V) that respects addition. If the complex
numbers are there as unreal scalings, multiplying by one respects addition but
doesn't commute with all (V|:V) which do respect addition; those
addition-respecting (V|:V) with which they *do* commute are known as
linear, with respect to the complex numbers

There is an isomorphism, called conjugation, on {(V:|V) respecting addition} which isn't the identity but does respect addition; those multiplying by complex scalars and their images under conjugation

In the complex plane, multiply by some given, then conjugate

respects addition; compose it with itself and you always get a real scaling
– furthermore, never a negative one. Compose two such and you get
multiplication by a complex (one's given times the conjugate of the other's),
which also respects addition.

When we come to look at a several complex dimensional space, V, the (V|:V) which respect addition include some, which compose with themselves to give a scaling, which look like a half-turn about some axis (for example; one could apply a scaling with it, if one wished) without any trace of conjugation involved (they're linear, not antilinear). Otherwise I'd just introduce, as anti-scalings, those (V|:V) which respect addition and compose with themselves to give positive real scalings.

I need to look into the positivity thing.

I can get the positive scalings by saying: take all your real scalings, throw away any that happen to be additive identities, compose each with itself and gather up the results. This presumes continuity of the square root function (except at 0).

I get my real scalars, for an additive context V, as those (V|:V) which
respect addition and commute with all (V|:V) which respect addition. I need
to establish that these are suitably one dimensional

so that I can use
0, if present (without it, we only have positives) divides the positives
(identified by V being among them) from the rest.

I can echo the orthodox way to obtain real scalars as follows. The positive integer multiples of the identity provide a natural skeleton for the scalings; if these are all epic – i.e. {n.v: v in V} is V for each positive interger n – they generate the positive rationals, which form the skeleton of a continuum; if there are scalings to fill in the whole continuum, we get the positive orthodox reals.

What does one-dimensional mean ? It's about the strict ordering available: we can say that

({positives}| x&on;x ← x |{non-zero real scalings}). We obtain an
ordering, <, as: ({real scalings}: x+y ←x, positive y |{real
scalings}), i.e. x < z iff there is some positive y for which x+y is
z. The reverse of this ordering is called >. It remains to see what real
scalings aren't related to one another, in one order or the other, by < and
ask: must they be equal ? We can use the construction of rationals above to
show that they differ by less than any positive rational

but may be
left with an infinitesimal neighbourhood. Is that suitably
one-dimensional ?

But with the positives as the squares of all scalings (not just the
rational ones we were able to construct) we can hope to pull back an ordering
even on any infinitesimal displacements at our disposal. To attempt this:
I'll say that a ({real scaling}: f :{real scaling}) respects order

precisely if a<b and a in (|f:) implies b in (|f:) with f(a)<f(b)
– i.e. if there's some positive c with a+c=b, then there's some positive
d with f(a)+d=f(b). The positivity can be hidden by rephrasing positive c
with a+c=b

as real scaling h with a+h.h=b

and likewise for d.

Now consider two functions f, g on {real scalings}, each of which respects <. Given real scalings a, b, h with a+h.h=b, f's respect gives some k with f(a)+k.k=f(b), g's then gives some d with g(f(a))+d.d=g(f(b)) so g&on;f respects <. For f+g, we get f(a)+k.k=f(b) and g(a)+e.e=g(b) so (f+g)(a) + k.k+e.e = (f+g)(b) and we just need to show that a sum of positives is positive – a sum of two squares must have a square root !

I intuit that ({positives: x.x ←x |{positives}) respects order. Does it ? a+c=b gives a.a +2.a.c +c.c =b.b with all parties given to be positive; but, officially, I need (2.a+c).c to be k.k for some scaling k, which is a pythagorean game. Still, I can think of it as (b+a).c and reduce the problem to asking whether a<b, with a positive, implies b+a is positive, but this just asks whether a sum of positives is positive. Which shouldn't be so hard to prove, should it ?

Written by Eddy.