Understanding Why Complex Multiplication Works

In the “Visualizing Complex Multiplication”, first figure, I didn’t understand why the new scaled and rotated triangle starts from the tip of the old one. Why not just put it “to the right” of the original one, wouldn’t that be considered adding them as well?

@david: Great question. In order to be consistent, we need to pick something as the “end” of the triangle to add onto (on a number line, 3 + 5 means you go to the “end” of 3 and then begin your “5”).

Similarly, the “end” of the triangle is the end of the imaginary part. We could take the imaginary part first (go vertical, then horizontal) and the “end” would be the same location (though we arrived at a different path). This 2nd path would be like the outside of an F.

If we had 3 + (3 + i) we would indeed be adding the 2nd triangle (3 + i) alongside the regular number (3), and it would just be shifted by 3 units. Hope this helps!

perfectly clear, thanks kalid!

@david: Glad it helped!

Hello Kalid,
first of all i want to tank you for your work. I never looked at complex numbers this way!

But there is one thing i don’t really understand:
How do you tell which complex number equals which angel (rotation)?
e.g. : 1+i = [45°]

i tought about this a little bit but didn’t really got good results, here’s what i got:

  • we’re in 2D

therefore we can say: (the slope) m = |y|/|x| = tan(alpha)
e.g. : the angel between (|x|, 0) and (0, i|y|) is 45° if x=y=1

and if we now say that |x| = 1 (lenght of x)
then there is : |y| = tan(alpha)

now we can ask, e.g. what the value for 45° is
we say: tan(45°) = 1 = |y|

therefore: if we multiply any vektor with (1, i*|y|) it should rotate 45°

but tan(70°) returns 2,747474… , instead of this i could write (1, i*tan(alpha)) -> rotation alpha degree

but that can’t be right

please tell me, is there an easy way to get to know the complex number for a rotation of alpha degree?

[…] “3 x 4″ can mean “Take your 3x growth and make it 4x larger (i.e., 12x)”. Complex multiplication lets us combine rotations. Integrals let us do piece-by-piece […]

[…] Multiplying by a complex number rotates by its angle […]

[…] 原文链接:http://betterexplained.com/articles/understanding-why-complex-multiplication-works/ 此条目由 Gosin 发表在 有时翻译 分类目录,并贴了 BetterExplained 标签。将固定链接加入收藏夹。 […]

wow thats what i am really searching for?
finally i got it here.
really really helpful, "please write a post on transformations like laplace, z transformation,etc

Hi leMingathon, glad you are enjoying the articles! Totally agree, symbols and jargon are only useful after the core intuitions have been put in place.

For your questions:

  1. I should have picked better variables to help avoid confusion with the x- and y-axis. In the example, “x” was the length of the hypotenuse, and we were multiplying by the complex number “2 + 3i”. If we do (x)(2 + 3i) = 2x + 3xi, we see the result is a complex number (a triangle) of side “2x” (real dimension) and “3x” (imaginary dimension).

  2. We usually write complex numbers as “a + bi”, where a is the size of the real component, b is the size of the imaginary component.

  3. If the triangle/complex number has size of 1, it means a^2 + b^2 = 1, i.e., it’s a distance of 1 from the center. We haven’t specified the angle, so it could be 1.0 (which is distance 1, at 0 degrees), or i (distance 1, at 90 degrees), -1 (distance 1, at 180 degrees), .707 + .707i (distance 1, at 45 degrees), and so on. The idea is the total “size” of the number stays on the unit circle (like taking a pencil 1 unit long and spinning it… same length, different angle).

Hope this helps!

Thanks so much this was great.


Firstly, can i just say that your maths (I’m from the UK :)) articles are some of the best and clearest I’ve ever read - finally, someone who doesn’t boggle the remaining maths enthusiasts out there with page after page of algebraic equations and formulas, weird symbols and meaningless jargon! However, I don’t really understand your explanation of the change in size of the triangles in this particular article - the stuff under “Side Effects May Include Scaling”, specifically: 1) Why is the size of the triangle 2x 3x? Surely it should be the distance along the “x-axis” the distance along the “y-axis”? 2) What do a and b stand for in “x*sqrt(a^2 b^2)”? 3) What does “…the new triangle is size 1” mean? (This one stems from the previous question)

I’d be very grateful if you could answer these questions.


You’re doing great work here Kalid. It might be interesting to add phasor notation to this discussion to help bring everything together and connect the concepts with Euler’s formula.

Thanks Joe! Phasors would be a great follow-up, I haven’t used them much formally but they fit nicely with Euler’s formula. More and more, I’m seeing everything as a variation on e^x :).

Yeah, phasors are a very convenient way to do complex multiplication. In case readers aren’t familiar, I’ll quickly go through the steps (hope you don’t mind).

1.) First, calculate the magnitude of each complex number using the formula Kalid provided: {magnitude=SQRT(x^2+y^2)}, where “x” is the real part of the complex number and “y” is the imaginary part.

2.) Next, calculate the phase of each complex number using the formula
{phase=atan2(y/x)}, where “x” and “y” are again the real and imaginary parts of the complex number (respectively) and atan2 is a dual-input variation of the arctan function (don’t worry, it’s easy to calculate using tan^-1 on your calculator and a simple table available on Wiki).

The complex numbers in this form are often written |mag|<phase (the < sign should actually look bigger and the bottom should be horizontal) and said to be "magnitude at phase". For example, for (2+3i)=|3.6|<56.3°, we could say 3.6 at 56.3 degrees.

3.) Now just multiple the angles and add the phases to get your answer in polar form!

Plus, Euler’s formula {e^ix = cos(x) + i sin(x)} can make the “Boring Explanation” a little more intuitive. You started with polar coordinates:

r1[cos(a) + i sin(a)]*r2[cos(b) + i sin (b)]

According to Euler, this is equal to {r1r2e^iae^ib}. We know that when multiplying exponential numbers with like bases (here the like base is e), the exponents add. So we can immediately see that the angles (which are contained in the exponents) will add, and we get {r1r2e^i(a+b)}. The new complex number has magnitude r1r2 and angle (a+b)!


Wow … that was a quick answer :slight_smile:

I guess “Trig is the conversion magic to go back and forth.” is exactly where my problem is. The point I need to rotate is defined by it’s coordinates on the screen:
z = x + yi

and the number i’d like to rotate about is defined by another objects angle in degree or radians and always needs to have a length of 1:
r = 1 * e ^(φ*i)

and the result needs to be a point on the screen again
z’ = x’ + y’i

(forgive me if I’m making mistakes with how mathematical stuff is written :slight_smile:

so the equation would be something like:
z’ = (x + yi) * e^(φ*i)

But I see no way to write a code like
x’ =
y’ =
out of that without trigonometry :frowning:

I still think I had it done so many years ago. Guess I was much smarter back then or I’m mistaken and I actually did use some trig. The latter is much more likely of course :slight_smile:

Thanks alot for these explanations. Really helped me to understand alot I had long forgotten since school. But I still have a question: How to rotate any vector by any angle without using trigonometry and without scaling?

I’m asking because I’m trying to code a small game where I need to rotate many objects and I’d like to avoid trigonometry. I can read the x and y of each object and I can read the angle by wich I need to rotate the object. I’ll need to find x and y of the object after the rotation.

So when I multiply a complex number by (0, 1i) or (-1, 0i) or (0, -1i) I’ll get 90°, 180° and 270° rotations without scaling since the length of the multiplier is 1.

To multiply by any other angle without scaling the product I’d need to multiply by (cos(φ), sin(φ)). But then I’m back to using trigonometry wich I wanted to avoid.

I vaugely remember back in school about 20 years ago I programmed a rather short code that rotated any vector by any angle without using trigonometry and without scaling. The code based on something like rotating by i is 90° and rotating by half i is 45°. Of course multplying by 0.5i is not working since that will be a rotation by 90° and scaling by 0.5. But I cant remember how I did it and I don’t have neither that program nor the source anymore :slight_smile:

Would anyone be so kind to refresh my memory?

Hi Greg, great question.

I see multiplication as a way to apply all the properties from one item to another, so for example:

3 * (-5)

means all the properties of -5 (being negative, being 5x the unit value) are being applied to 3, which gives us -15.

When multiplying by a complex number, one property is the magnitude, which is worked out from the Pythagorean theorem (finding the hypotenuse of the triangle the complex number makes, which is its distance from the origin).

i is really (0 + 1*i), and has magnitude sqrt(0^2 + 1^2) = 1.

1 + i is a 45-degree angle (equal parts in the real and imaginary dimensions) and has magnitude sqrt(1^2 + 1^2) = sqrt(2).

So, we can rotate a number by 45 degrees by multiplying by (1 + i), then dividing by sqrt(2) to remove the effect of the scaling.

Alternatively, you can just bring the scaling factor into the multiplication, and then multiply by

1/sqrt(2) + i/sqrt(2)


I like using complex numbers instead of trig, the only downside is you need to know the size of the triangle you want to use (1 + i) instead of the angle (45 degrees). Trig is the conversion magic to go back and forth.

(By the way, you’ll see the cos(45) = sin(45) = 1/sqrt(2), which matches up with what we found using complex numbers.)