Complex.js icon indicating copy to clipboard operation
Complex.js copied to clipboard

Behaviour of z^Infinity and Infinity^z

Open harrysarson opened this issue 7 years ago • 29 comments

What does the Riemann mapping say when it comes to the complex exponential?

@derknorton @balagge

harrysarson avatar Mar 09 '18 12:03 harrysarson

My understanding is that all mathematical operations that work in the complex plane work the same way on the Riemann sphere. So the results of complex exponential operations that land in the complex plane get mapped to the appropriate place on the Riemann sphere. This includes zero and all four infinities (which map to the poles).

On Mar 9, 2018, at 5:36 AM, Harry Sarson [email protected] wrote:

What does the Riemann mapping say when it comes to the complex exponential?

@derknorton https://github.com/derknorton @balagge https://github.com/balagge — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/infusion/Complex.js/issues/24, or mute the thread https://github.com/notifications/unsubscribe-auth/AFk1eYg5265IBEFelQUwroPF1Ie1_shAks5tcndUgaJpZM4SkNEU.

derknorton avatar Mar 09 '18 14:03 derknorton

What does that make Complex(Infinity).exp() equal to?

harrysarson avatar Mar 09 '18 15:03 harrysarson

Since z^n is the same as z * z * ... * z and Infinity * Infinity => Infinity I would say the answer should be Infinity.

On Mar 9, 2018, at 8:46 AM, Harry Sarson [email protected] wrote:

What does that make Complex(Infinity).exp() equal to?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/infusion/Complex.js/issues/24#issuecomment-371850345, or mute the thread https://github.com/notifications/unsubscribe-auth/AFk1eWHCXBVLQqHp6JEpvCkubJCgNAeGks5tcqPggaJpZM4SkNEU.

derknorton avatar Mar 09 '18 15:03 derknorton

indeterminate. (no value, NaN, whatever. same as 0 / 0)

balagge avatar Mar 09 '18 16:03 balagge

wolfram: kepernyokep 2018-03-09 17 26 18

balagge avatar Mar 09 '18 16:03 balagge

This is because kepernyokep 2018-03-09 17 32 33 which means that if z = x + iy and z goes to infinity, then we cannot determine the limit of exp(z). For example, take the following z values: 0, i, 2i, 3i, .... Then the limit exp(0), exp(i), exp(2i), ... will be meaningless, as exp(n i) = cos n + i sin n, which is essentially a "random" point on the unit circle, clearly does not converge (neither to infinity, nor to any given complex number)

balagge avatar Mar 09 '18 16:03 balagge

or, if you take the z values: 0, i*pi, 2 i*pi, 3 i*pi, etc. (clearly z goes to infinity) then the exp(z) values will be +1, -1, +1, ... as exp(n i pi) is -1 if n is odd and + 1 if n is even. complex exponentiation is always tricky.

balagge avatar Mar 09 '18 16:03 balagge

truly confusing, I never liked this part of complex theory. https://en.wikipedia.org/wiki/Exponential_function#Complex_plane

balagge avatar Mar 09 '18 16:03 balagge

this is how wikipedia pictures the complex exp function. pretty cool. Brightness means the absolute value, color means the direction.

Now if you approach infinity "to the right", then you will have a sequence that also goes to infinity. However, if you approach it "to the top" (as in the example I wrote above), then you will be going around the unit circle. Same with the bottom direction.

If you go left (to the same complex infinity) than the exponentiation will go to zero...

https://upload.wikimedia.org/wikipedia/commons/a/a7/Complex_exp.jpg

balagge avatar Mar 09 '18 17:03 balagge

I think Harry was asking about Infinity^z rather than z^Infinity. The first should be Infinity. I think you are correct that the second should be indeterminate (NaN).

On Mar 9, 2018, at 9:27 AM, Paál Balázs [email protected] wrote:

wolfram: https://user-images.githubusercontent.com/13258533/37217878-1069145a-23bf-11e8-92be-e8594f029ba3.png — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/infusion/Complex.js/issues/24#issuecomment-371862972, or mute the thread https://github.com/notifications/unsubscribe-auth/AFk1ec-FmRT0CCgVU8626ah22wFIN2FZks5tcq1ygaJpZM4SkNEU.

derknorton avatar Mar 09 '18 18:03 derknorton

@derknorton Both cases are relivant but to clarify:

Complex(Infinity).exp() calculates e^Infinity so I was talking about the second case.

harrysarson avatar Mar 09 '18 18:03 harrysarson

Sorry, my mistake...

On Mar 9, 2018, at 11:29 AM, Harry Sarson [email protected] wrote:

@derknorton https://github.com/derknorton Both cases are relivant but to clarify:

Complex(Infinity).exp() calculates e^Infinity so I was talking about the second case.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/infusion/Complex.js/issues/24#issuecomment-371904065, or mute the thread https://github.com/notifications/unsubscribe-auth/AFk1eZLnTvBQSoALVpXUiMjs0enyuLT7ks5tcsoQgaJpZM4SkNEU.

derknorton avatar Mar 09 '18 18:03 derknorton

To summarise for complex z :

  1. 0 ^ Infinity === 0
  2. 1 ^ Infinity === 1
  3. z ^ Infinity === |z| < 1 ? 0 : NaN
  4. Infinity ^ Infinity === NaN
  5. Infinity ^ 0 === NaN
  6. Infinity ^ 1 === Infinity
  7. Infinity ^ z === Infinity

maybe?

harrysarson avatar Mar 09 '18 18:03 harrysarson

I think #3 should result in Infinity for |z| > 1

On Mar 9, 2018, at 11:36 AM, Harry Sarson [email protected] wrote:

To summarise for complex z :

0 ^ Infinity === 0 1 ^ Infinity === 1 z ^ Infinity === |z| < 1 ? 0 : NaN Infinity ^ Infinity === NaN Infinity ^ 0 === NaN Infinity ^ 1 === Infinity Infinity ^ z === Infinity — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/infusion/Complex.js/issues/24#issuecomment-371906406, or mute the thread https://github.com/notifications/unsubscribe-auth/AFk1eVGBKrsd7RXaE1CKXj1aXgiOwA_Cks5tcsusgaJpZM4SkNEU.

derknorton avatar Mar 09 '18 18:03 derknorton

https://github.com/infusion/Complex.js/issues/24#issuecomment-371865945 says it should not

harrysarson avatar Mar 09 '18 19:03 harrysarson

That's fine, but we should clarify (especially in the code) that for real z the third one approaches Infinity for |z| > 1 ;-)

On Mar 9, 2018, at 12:01 PM, Harry Sarson [email protected] wrote:

#24 (comment) https://github.com/infusion/Complex.js/issues/24#issuecomment-371865945 says it should not

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/infusion/Complex.js/issues/24#issuecomment-371913349, or mute the thread https://github.com/notifications/unsubscribe-auth/AFk1eeBq_k-nR2CzcsMxIO17QWtuU7l-ks5tctGGgaJpZM4SkNEU.

derknorton avatar Mar 09 '18 20:03 derknorton

Wait. There are quite a few problems with exponentiation in the general cases. As a start, check out https://en.wikipedia.org/wiki/Exponentiation#Complex_exponents_with_positive_real_bases and https://en.wikipedia.org/wiki/Exponentiation#Powers_of_complex_numbers just to see the complexity of the issue. It is not necessary to understand everything (or anything), but it is quite clear that exponentiation has a lot of pitfalls on the complex plane and cannot be easily handled.

Whenever an exponentiation involves Infinity (which, on the Riemann sphere means a single complex infinity), the only way to define the meaning is by using limits, so e.g. a ^ Infinity is the limit of a ^ z where z -> Infinity. However, determining such limits is not always intuitive, and, for some of the cases, even the simple exponentiation z ^ w (neither being Infinity) is hard.

I thought the question was about e ^ Infinity, because that is usually understood by the function exp(), and I think the Complex library has the same meaning.

balagge avatar Mar 09 '18 22:03 balagge

So I checked all of the other examples first on Wolfram Cloud, and actually most of them are indeterminate. I am still working on understanding each case, but there are serious challenges here, although I have a degree in math :)

Ok, so:

  1. 0 ^ Infinity is indeterminate. This one is not so difficult to see, because choosing a sequence z_n = 1, 2, ..., you get 0 ^ (z_n) = 0,0,0,..., however another sequence w_n = -1, -2, -3, ... yields 0 ^ (w_n) = Infinity, Infinity, Infinity, ..... Therefore, the expression 0 ^ z has no definite limit if z -> Infinity.

balagge avatar Mar 09 '18 22:03 balagge

  1. 1 ^ Infinity is indeterminate. This I do not understand as of yet. Still working on it.

balagge avatar Mar 09 '18 22:03 balagge

  1. z ^ Infinity is indeterminate, even if |z| < 1. This would require determining a definite limit for z ^ w (where w -> Infinity). However, unless z is a positive real number, such powers are difficult to calculate and some (most) do not even have a single well-defined value, but many different (sometimes infinitely many different) possible results. As I have said before, exponentiation on the complex plane is hard and counter-intuitive.

Quote from wikipedia:

"Trying to extend these functions to the general case of noninteger powers of complex numbers that are not positive reals leads to difficulties. Either we define discontinuous functions or multivalued functions. Neither of these options is entirely satisfactory."

In other words, z ^ w is better left undefined, unless z is a positive real.

This means that the infinite case, z ^ Infinity should, in my opinion, be indeterminate for the general case (z is not a positive real).

However, for the positive real case: this is also indeterminate, unless z = 1, which is the case above, and I am not sure about it. This case is basically very similar to e ^ Infinity, because a power a ^ w can be solved by writing a ^ w = e ^ (ln(a) w ). Then decompose w = x + i y, you get e ^ (ln(a) * (x + i y)), which is e ^ (ln(a) x + i ln(a) y) = a ^ x * (cos (ln(a) y) + i sin (ln(a) y). This is a bit of a mess at first sight, but it is essentially the same as the natural base case mentioned earlier, unless a = 1. For a <> 1, you can always choose some silly w's, so that e.g. the real part of w (which is x) is fixed, and then you get "random" numbers on the circle with radius a^x, clearly divergent.

balagge avatar Mar 09 '18 23:03 balagge

  1. Infinity ^ Infinity === NaN that is correct.
  2. Infinity ^ 0 === NaN
  3. Infinity ^ 1 === Infinity that is correct by definition.
  4. Infinity ^ z is, unfortunately, again indeterminate, unless z is a non-zero real number. However, for reals, this may have a value: Infinity ^ x is Infinity, if x is positive, 0 if x is negative. I am a bit tired to be 100% sure, but this is what Wolfram gives as a result and it seems ok.

balagge avatar Mar 09 '18 23:03 balagge

Summary:

Any exponentiation involving Infinity (either as base or exponent) is indeterminate, except:

(6) Infinity ^ 1 === Infinity, (7a) Infinity ^ z === Infinity, if z is a positive real number (Im(z) === 0, Re(z) >0) (7b) Infinity ^ z === 0, if z is a negative real number (Im(z) === 0, Re(z) < 0)

And, the only question is the result of 1 ^ Infinity, but I need some more time on that one. (but wolfram gives indeterminate for that as well)

balagge avatar Mar 09 '18 23:03 balagge

For (7b) could we qnot have Infinity ^ z === 0 if the real part of z is negative. Wolfram agrees: image.

I can buy that (1), (3) and (4) should all be NaN.

As for 1 ^ Infinity, could this not be 1? The best argument that I can think of against this is that it is z ^ Infinity is NaN for all z !== 1 so it might as well be NaN for 1 aswell.

harrysarson avatar Mar 14 '18 09:03 harrysarson

To summarise for any complex z:

  1. z ^ Infinity === NaN
  2. Infinity ^ z === Infinity if Im(z) === 0 and Re(z) > 0
  3. Infinity ^ z === 0 if Re(z) < 0
  4. Infinity ^ 0 === 1
  5. Infinity ^ z === NaN otherwise

Question: should Infinity ^ 0 === 1 which would fit with behavour for Numbers in js?

harrysarson avatar Mar 14 '18 23:03 harrysarson

On Mar 14, 2018, at 5:46 PM, Harry Sarson [email protected] wrote:

To summarise for any complex z:

z ^ Infinity === NaN Infinity ^ z === Infinity if Im(z) === 0 and Re(z) > 0 Infinity ^ z === 0 if Re(z) < 0 Infinity ^ z === NaN otherwise Question: should Infinity ^ 0 === 1 which would fit with behavour for Numbers in js?

I would think so, since I thought mathematicians had defined anything to the zeroth power as 1, but we should ask the real mathematician ;-)

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/infusion/Complex.js/issues/24#issuecomment-373212248, or mute the thread https://github.com/notifications/unsubscribe-auth/AFk1ec03ZkMb-ucHs4svV_Mmbjl_M_Ocks5teavwgaJpZM4SkNEU.

derknorton avatar Mar 15 '18 00:03 derknorton

image

harrysarson avatar Mar 15 '18 09:03 harrysarson

@harrysarson

For (7b) could we qnot have Infinity ^ z === 0 if the real part of z is negative.

you are right, provided that exponentiation is otherwise defined with a fixed branch cut of the log() function.

Wikipedia has a good explanation on how to compute a complex power:

https://en.wikipedia.org/wiki/Exponentiation#Computing_complex_powers

So if we want to compute w^z, we must choose a branch cut of log(), normally (-pi, pi]

Then w must be written in polar decomposition w = r e^(i theta) (choosing theta so that pi < theta <= pi, the principal branch cut), and z in Cartesian decomposition z = c + d i). The following formula gives the result:

w^z = r^c e^(-d theta) (cos(d log(r) + c theta) + i sin (d log(r) + c theta))

This indeed converges if Re(z) = c < 0 (w -> Infinity) , because the r^c part will converge to 0, the e^(-d theta) part is within a fixed range (here we use heavily that theta is in a fixed finite interval), and the rest is just a point on the unit circle, again bounded.

Generally, with multi-valued powers, this does not work, because theta can have any value and might "work against" the r^c part, hence no convergence.

Bottom line: if Complex.js defines z^w using this approach of a fixed branch cut, then Infinity^z = 0 if Re(z) < 0. You are right, I was wrong. :)

balagge avatar Mar 21 '18 00:03 balagge

For Infinity ^ 0 all material that I can find says it is indeterminate (even with real infinity)

https://en.wikipedia.org/wiki/Indeterminate_form

Infinity ^ 0 cannot be computed with lim z^0 (z -> Infinity). (That approach would yield Infinity * 0 = 0 as well, clearly wrong, az Infinity * 0 is also indeterminate)

The right way is with lim z^w (z -> Infinity, w -> 0). And that does not converge generally.

balagge avatar Mar 21 '18 01:03 balagge

Funny that javascript has Math.pow(Infinity,0) === 1. Yeah, that is a problem. But javascript also has Math.pow(-2, Infinity) === Infinity, which is even more silly. I do not know where they got that idea ...

balagge avatar Mar 21 '18 01:03 balagge