Trigonometry and complex numbers are two views of the same thing: rotation in a plane. Waves, oscillations, and quantum phases all live here, and Euler’s formula is the bridge that connects them. We treat them together because in quantum mechanics you almost never use one without the other.
Trigonometry¶
Sine and cosine on the unit circle¶
Take a point on a circle of radius 1 and rotate it counterclockwise by an angle (measured in radians, where a full turn is ). Its coordinates are, by definition,
Cosine is the horizontal coordinate, sine the vertical one, and the tangent is the slope of the radius.
Source
import numpy as np
import matplotlib.pyplot as plt
theta = np.deg2rad(50)
t = np.linspace(0, 2 * np.pi, 400)
fig, ax = plt.subplots(figsize=(5.5, 5.5))
ax.plot(np.cos(t), np.sin(t), 'k', lw=1.5) # unit circle
ax.plot([0, np.cos(theta)], [0, np.sin(theta)], color='#2e4057', lw=2) # radius
ax.plot([np.cos(theta), np.cos(theta)], [0, np.sin(theta)], color='#66a182', lw=2, label=r'$\sin\theta$')
ax.plot([0, np.cos(theta)], [0, 0], color='#d1495b', lw=2, label=r'$\cos\theta$')
ax.plot(np.cos(theta), np.sin(theta), 'ko', ms=6)
ax.annotate(r'$(\cos\theta,\ \sin\theta)$', (np.cos(theta), np.sin(theta)),
textcoords='offset points', xytext=(8, 8), fontsize=11)
ax.axhline(0, color='gray', lw=0.6)
ax.axvline(0, color='gray', lw=0.6)
ax.set_aspect('equal')
ax.set_xlim(-1.3, 1.5)
ax.set_ylim(-1.3, 1.3)
ax.legend(loc='lower left', fontsize=10)
ax.set_title(r'Fig.1 Sine and cosine as coordinates on the unit circle ($\theta=50^\circ$)')
plt.tight_layout()
plt.show()
As runs around the circle, the two coordinates trace out the familiar waves: cosine starts at 1, sine starts at 0, and each is the other shifted by a quarter turn.
Source
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(0, 2 * np.pi, 400)
fig, ax = plt.subplots(figsize=(7, 3.2))
ax.plot(t, np.cos(t), color='#d1495b', lw=2, label=r'$\cos\theta$')
ax.plot(t, np.sin(t), color='#66a182', lw=2, label=r'$\sin\theta$')
ax.axhline(0, color='gray', lw=0.6)
ax.set_xticks([0, np.pi / 2, np.pi, 3 * np.pi / 2, 2 * np.pi])
ax.set_xticklabels(['0', r'$\pi/2$', r'$\pi$', r'$3\pi/2$', r'$2\pi$'])
ax.set_xlabel(r'$\theta$ (radians)')
ax.legend(fontsize=10, loc='upper right')
ax.set_title('Fig.2 Cosine and sine as functions of the angle, offset by a quarter turn')
plt.tight_layout()
plt.show()
Key identities¶
Because the point lies on a unit circle, its coordinates always satisfy the Pythagorean identity:
The identities you will reach for most often are the angle-sum and power-reduction formulas:
For small angles (in radians), the first terms of the Taylor series give the approximations and , which are what let us linearize a pendulum or a vibrating bond near equilibrium.
Rather than memorize the whole table of identities, it is easier to derive them from Euler’s formula, which we build next.
Complex numbers¶
Complex numbers live in 2D¶
A complex number is a two-dimensional number: it needs two components for its full specification. They arise the moment we ask for the roots of a simple polynomial. The equation
has no real solution, so we extend the real line into the complex plane by introducing the imaginary unit , defined solely by

Fig.3 A complex number needs a real and an imaginary component to be fully specified, so it lives in a plane.
The quadratic formula and the discriminant
For the roots are . The discriminant decides their nature: gives two real roots, a repeated real root, and two complex conjugate roots.
Cartesian representation¶
Polar representation and Euler’s formula¶
Instead of horizontal and vertical parts, we can locate by its distance from the origin and its angle . From the unit-circle picture, and , so
The magic step is Euler’s formula, which collapses the parenthesis into an exponential:
Proof of Euler’s formula from Taylor series
The plot below shows why polar form is natural: the same complex number is one dot in the plane, described equally well by or by .
Source
import numpy as np
import matplotlib.pyplot as plt
z = 2 + 1.5j
r, phi = np.abs(z), np.angle(z)
fig, ax = plt.subplots(figsize=(5.5, 5))
ax.annotate('', xy=(z.real, z.imag), xytext=(0, 0),
arrowprops=dict(arrowstyle='->', color='#2e4057', lw=2))
arc = np.linspace(0, phi, 60)
ax.plot(0.6 * np.cos(arc), 0.6 * np.sin(arc), color='#d1495b', lw=1.5)
ax.plot([0, z.real], [z.imag, z.imag], '--', color='gray', lw=1)
ax.plot([z.real, z.real], [0, z.imag], '--', color='gray', lw=1)
ax.text(z.real + 0.1, z.imag + 0.1, fr'$z = {z.real:.0f}+{z.imag:.1f}i = {r:.2f}\,e^{{i\phi}}$', fontsize=11)
ax.text(0.7, 0.15, r'$\phi$', color='#d1495b', fontsize=13)
ax.text(z.real / 2, -0.25, r'$x=r\cos\phi$', color='gray', fontsize=9, ha='center')
ax.text(z.real + 0.05, z.imag / 2, r'$y=r\sin\phi$', color='gray', fontsize=9)
ax.axhline(0, color='black', lw=0.8)
ax.axvline(0, color='black', lw=0.8)
ax.set_xlim(-0.6, 3)
ax.set_ylim(-0.6, 2.4)
ax.set_aspect('equal')
ax.set_xlabel('Real')
ax.set_ylabel('Imaginary')
ax.set_title('Fig.4 The same number in Cartesian (x, y) and polar (r, phi) form')
plt.tight_layout()
plt.show()
Multiplication is rotation¶
In polar form, multiplication becomes almost trivial: magnitudes multiply and angles add.
So multiplying by rotates a number counterclockwise by without changing its length. Multiplying by is a quarter-turn. This is the same rotation that trigonometry describes, now in one clean line of algebra.

Fig.5 As increases, traces a helix. Its shadow on one wall is and on the other is , so a single rotating phase carries both waves at once.
The complex conjugate¶
The conjugate flips the sign of the imaginary part, reflecting across the real axis:
Multiplying a number by its conjugate rotates it back onto the real axis and returns a non-negative real number, the squared magnitude:
This is exactly the operation that turns a quantum amplitude into a probability density .
Taking sums and differences of and recovers the trig functions as exponentials, a substitution that simplifies countless integrals:
Deriving the angle-sum identities from Euler’s formula
Where this shows up in chemistry
Complex exponentials are the natural language of anything that oscillates or diffracts. In X-ray crystallography, each scattered wave is a complex number , and the structure factor combines these amplitudes and phases to reconstruct electron density by an inverse Fourier transform. The hard part, the phase problem, is precisely that detectors measure but not the phase that the complex representation makes explicit.
Problems¶
Problem 1: Multiplication in Cartesian form¶
Multiply and .
Solution
Problem 2: Modulus¶
Find for .
Solution
Problem 3: Division by the conjugate¶
Divide by .
Solution
Multiply numerator and denominator by :
Problem 4: Multiplication in polar form¶
Multiply and .
Solution
Magnitudes multiply, angles add:
Problem 5: Cartesian to polar¶
Express in polar form.
Solution
so .
Problem 6: A famous identity¶
Use Euler’s formula to evaluate .
Problem 7: Trig from exponentials¶
Using , show that .
Problem 8: Phase rotation¶
A quantum amplitude picks up a phase, . Show that the probability density is unchanged.