Posted by mfrw 4 days ago
This statement seems very likely to confuse someone who doesn't know about or understand how to compute the norm of a complex number.
Complex numbers are a 1-dimensional vector space over the complex numbers themselves, but are probably more readily understood as a two-dimensional vector space over the reals. Any field is a vector space of dimension 1 over itself.
For me that section is not necessary, because he justifies the formula for the norm based on the definition of the norm, which in turn is historically justified by the norm over R2, which is by no doubt the first example of norm discovered (Pythagoras theorem).
Yeah, but computing z* really involves taking apart the complex number and fiddling with the real coefficient of the imaginary part. zz* looks like an operation in C, but it's kind of not.
It's incredibly useful as an operator, and it appears all over the place in Hilbert spaces and other complex-probability situations, but fundamentally it defies attempts to use it for analytic purposes (like differential equations or contour integration).
Useful when you need to treat the complex plane as a vector space or are interested in the topology of a complex function, but a pain to deal with in almost any other context.
In particular, since sums of holomorphic functions are holomorphic, the sum f(z) = z + z* of the identity function g(z) = z and conjugate function h(z) = z* would need to be holomorphic. But z + z* cancels out the imaginary part of z and therefore maps the complex plane to the real line - and it should be obvious that a map from C to R cannot possibly preserve the properties of C in any intuitive way.
Roughly speaking, the conjugate fails to be holomorphic because it maps C to its mirror image, rather than C itself, in much the same way that reflecting a circle is different from rotating it.
Edit: no, it can't be done because the Cauchy-Riemann equations make no sense here.
However: Suppose that for every n > 0 there exists a holomorphic function f_n such that |f_n(z) - z| < 1/n for all z. Then |f_n(z)| <= |f_n(z) - z| + |z*| = |z| + 1/n by the triangle inequality. A consequence of Liouville's theorem is that any entire holomorphic function with polynomial growth is a polynomial; here in particular we would need to have f_n(z) = a_n z + b_n for some complex numbers a_n and b_n. For real x we would have |(a_n - 1)x + b_n| < 1/n for all x, so a_n = 1. For imaginary iy we would have |(a_n + 1)iy + b_n| < 1/n for all y, so a_n = -1, which is a contradiction.
In fact, if a sequence of holomorphic functions converges uniformely on compact sets, the limit is itself holomorphic because of Cauchy's theorem.
The issue is that the Cauchy Riemann equations don't hold. (You would need 1==-1)
[1] I sincerely apologize to anyone who works with floats for this statement.
Even more generally, a real-differentiable function is complex differentiable iff its (Wirtinger) derivative with respect to z* is 0.
I guess because it's true for the reals. But yeah, I agree anyone who has got 10 minutes into an explanation of complex arithmetic should have got that far... I guess it's directed at people not acquainted with complex numbers much at all
>>> import math
>>> z=1+2j
>>> z*complex.conjugate(z)
(5+0j)
>>> math.sqrt((z*complex.conjugate(z)).real)
2.23606797749979
>>> abs(z)
2.23606797749979
As we can see abs(z) does the right thing. Try it with a negative imaginary part too and "nicer" values: >> z = 3-4j
>>> math.sqrt((z*complex.conjugate(z)).real)
5.0
>>> abs(z)
5.0
joe@zap:~ $ julia
_
_ _ _(_)_ | Documentation: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.10.5 (2024-08-27)
_/ |\__'_|_|_|\__'_| |
|__/ |
julia> z=1+2*im
1 + 2im
julia> z*conj(z)
5 + 0im
julia> sqrt(z*conj(z))
2.23606797749979 + 0.0im
julia> abs(z)
2.23606797749979
>>> (1+1j)**(1+1j)
(0.2739572538301211+0.5837007587586147j)
Ironically, the `math` library doesn't handle that: >>> math.pow(1+1j, 1+1j)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: must be real number, not complex
julia> (1+im)^(1+im)
0.2739572538301211 + 0.5837007587586147im
$ sbcl
This is SBCL 2.4.8, an implementation of ANSI Common Lisp.
* (setf z #C(1 2))
#C(1 2)
* (* z (conjugate z))
5
* (sqrt (* z (conjugate z)))
2.236068
* (abs z)
2.236068
x=1
x.conjugate()
x=1+2j
x.conjugate()
I hadn't worked with complex numbers much for most of my life, but getting into quantum computing recently it is ALL complex numbers (and linear algebra). It's fascinating (for a certain mindset at least, which I guess I fall into), but it is a lot of mental work and repetition before it starts to feel in any way 'comfortable'.
That much is clear much righter away just by noticing that for the simplest imaginary number imaginable (z=i) zz is negative but the norm-squared is positive-valued.
√(1²+i²) = √(1-1) = 0
That can't be right...
That formula may be familiar, but it doesn’t compute a distance.
A simple demonstration of why this is necessary is to consider the distance between the points 3 and 4. If you naively compute the distance between them using the familiar Euclidean formula √(a²+b²) you get:
√(3²+4²) = √(9+16) = √(25) = 5
That can't be right...
e.g. the norm for Minkowski's space-time can be negative and does not satisfy the triangle inequality.
Imagine the sheer courage it took for Minkowski to propose a distance function which did not satisfy the triangle inequality.....the moral of the story is yes, learn up on these concepts, but don't be so wedded to somebody else's definition that you can't see when it should be relaxed and generalized.
It also has nothing to do with the complex numbers where the canonical norm is, in fact, a norm.
// It also has nothing to do with the complex numbers //
The author of the linked article said that what he was describing was a norm because it satisfied the triangle inequality (among other things). I'm just pointing out that the (among other things) was enough for it to be a norm.
I certainly wished somebody had pointed out to me that not all norms need to satisfy the triangle property. There have been spaces where I wasted months of effort trying to find a norm which satisfied the triangle inequality, when a more minkowski-like norm would have been perfectly adequate.
Also your link links to a disambiguation page.
I know, it came as a big surprise to me too.
If you want a more "complex numbers" justification, you can say that you want to make the vector "real" by moving it to the real line, so you multiply it by the inverse rotation of the complex number that you are looking at. If you instead multiply it by the conjugate, then you need to compute the square root of the output since it multiplies by the radius again.
I hope this helps!