The partner you are hunting for
You arrive here already convinced of the headline fact from the previous guide: if u(x,y) is harmonic on a nice region — meaning it satisfies Laplace's equation u_xx + u_yy = 0 — then there exists a second harmonic function v(x,y), its harmonic conjugate, such that f = u + i v is holomorphic. That guide argued the conjugate exists. This guide answers the down-to-earth follow-up question: given a specific u, how do I actually write down v? The answer is a short, mechanical recipe, and the whole of it comes straight out of the Cauchy-Riemann equations.
The two equations are the entire engine: u_x = v_y and u_y = -v_x. Read them not as constraints to check but as instructions to follow. The left-hand sides are things you can compute right now — they are just partial derivatives of the u you were handed. The right-hand sides are partial derivatives of the unknown v. So the Cauchy-Riemann equations literally tell you both partial derivatives of v in terms of partial derivatives of u. Knowing both partials of a function and recovering the function itself is exactly an integration problem, and that is the whole game.
Given: u(x,y) harmonic -> want v with f = u + i v holomorphic
Cauchy-Riemann: u_x = v_y u_y = -v_x
so the GRADIENT of v is read straight off u:
v_x = -u_y v_y = u_x
integrate one, differentiate the result, match the other.The recipe, step by step
Here is the standard four-move procedure. The one subtlety to keep your eye on is that when you integrate a partial derivative with respect to x, the 'constant of integration' is not a constant — it is an unknown function of the OTHER variable, y. That leftover function is exactly what the second equation pins down. Watch how the two Cauchy-Riemann equations cooperate: the first builds a draft of v, the second corrects the one piece the first could not see.
- Compute u_x and u_y from the given u. (Optional sanity check: verify u_xx + u_yy = 0, so that a conjugate exists at all — if u is not harmonic, no v can work.)
- Use the first equation v_y = u_x and integrate with respect to y: v(x,y) = integral of u_x dy + g(x), where g(x) is an unknown function of x alone (the 'constant' of y-integration).
- Differentiate this draft v with respect to x to get v_x, then set it equal to -u_y (the second equation). Everything cancels except a condition on g'(x).
- Solve for g'(x), integrate once to get g(x) (a genuine constant of integration remains — the conjugate is unique only up to an additive real constant), and substitute back. You now have v.
A tiny worked example
Let us run the recipe on u(x,y) = x^2 - y^2. First the partials: u_x = 2x and u_y = -2y. A quick harmonic check, u_xx + u_yy = 2 + (-2) = 0, so a conjugate exists. Now step 2: v_y = u_x = 2x, and integrating with respect to y gives v = 2xy + g(x). Step 3: differentiate, v_x = 2y + g'(x), and this must equal -u_y = -(-2y) = 2y. Comparing, g'(x) = 0, so g(x) = C, a constant. Hence v = 2xy + C.
Now the satisfying payoff. Assemble f = u + i v = (x^2 - y^2) + i(2xy). That is not a random expression — it is exactly z^2, since (x + i y)^2 = x^2 - y^2 + i(2xy). The recipe took the bare real part x^2 - y^2 and reconstructed the whole holomorphic function z^2 (up to the harmless constant iC). This is the practical face of the slogan that a holomorphic function is determined by its real part: u alone, plus the Cauchy-Riemann machinery, was enough to rebuild f.
One honest caution about what 'the' conjugate means. The C you collected is real and arbitrary, so v is determined only up to adding a real constant; equivalently f is determined only up to adding the purely imaginary constant iC. That is the complete extent of the ambiguity — no more, no less. People still say 'the' harmonic conjugate because, on a connected region, fixing the value of v at a single point removes the constant and makes it genuinely unique. Note also the asymmetry: if v is the conjugate of u, then u is NOT the conjugate of v — rather -u is, because the conjugate of v has its own roles for u_x and u_y swapped with a sign.
When the hunt can fail
The recipe always succeeds on a disk, a rectangle, the whole plane — any region with no holes. But existence of a single-valued conjugate is NOT automatic on a region with a hole in it, and this is the one genuine pitfall to remember. The standard cautionary tale is u(x,y) = log|z| = (1/2) log(x^2 + y^2), the textbook harmonic function on the punctured plane (everywhere except the origin). It is perfectly harmonic where it is defined, yet its only candidate conjugate is the angle, v = arg z = theta — and the angle increases by 2 pi every time you loop around the origin, so it cannot be defined as a single-valued function on the whole punctured plane.
What goes wrong mechanically is illuminating. Locally — on any small patch away from the origin — the recipe runs fine and produces a perfectly good v; the trouble is only global. When you try to extend that local v all the way around the hole and back to your starting point, it does not return to the same value; it has crept up by 2 pi. So a single-valued conjugate exists locally everywhere but cannot be stitched into one consistent function across the loop. This is the same multivaluedness that forces a branch cut on log z, seen from the harmonic-conjugate side.
A shortcut that skips the integrals
Once the recipe feels routine, there is a faster route worth knowing, often called the Milne-Thomson method, and it leans on something subtle you may have met as the Wirtinger derivatives. The idea: instead of building v laboriously and then assembling f = u + i v, reconstruct the holomorphic f' directly and integrate once in z. The key observation is that for a holomorphic f, the derivative is f'(z) = u_x - i u_y (this is just the Cauchy-Riemann equations rearranged), and the right-hand side is built only from partials of u.
Here is the trick that makes it almost magic. Form the expression u_x(x,y) - i u_y(x,y), then formally substitute x = z and y = 0 everywhere it appears. The result is a function of z alone, and it equals f'(z). Integrate that with respect to z, add a constant, and you have f directly — its imaginary part is your conjugate v, no double integration of g(x) required. On our example, u_x - i u_y = 2x - i(-2y) = 2x + 2iy; substituting x = z, y = 0 gives 2z; and integrating gives f = z^2 + C, matching what the long recipe produced.
Be honest about why this 'substitute x = z, y = 0' move is legal — it is not folklore. It works because a holomorphic function agrees with its own power series, and on the real axis (y = 0, x = z real) that series already encodes the function for all z, by the same identity-theorem fact that a holomorphic function is pinned down by its values on a line. So whether you prefer the patient four-step integration or the slick one-line substitution, both rest on the same single foundation — the Cauchy-Riemann equations — and both deliver the same f. Pick the integration route when you want transparency and the shortcut when you want speed.