Solving functional equations comes down to a handful of reliable techniques: strategic substitution, exploiting symmetry, reducing to known equation types, and establishing properties like injectivity. Unlike standard algebra where you solve for a number, here you solve for an entire function. The good news is that most problems yield to the same core strategies, applied in a consistent order.
Start With Strategic Substitution
The single most useful technique for functional equations is substituting specific values for variables. The goal is to extract concrete information about the function, one piece at a time. For any functional equation, your first move should almost always be plugging in simple values like 0, 1, or negative versions of the variable.
Substituting x = 0 and y = 0 often reveals the value of f(0), which anchors everything else. For example, if you’re given f(x + y) = f(x) · f(y) and you set both variables to zero, you get f(0) = f(0)², which means f(0) is either 0 or 1. If f(0) = 0, the entire function collapses to zero everywhere. If f(0) = 1, you’ve learned something structural you can build on.
After pinning down f(0), try substituting y = −x (to learn about f(0) in a different way, or to discover a relationship between f(x) and f(−x)), then y = x (which often simplifies products or sums), then x = 1 or y = 1 (which can reveal f at specific points). Each substitution gives you a new equation, and collecting several of these often lets you guess the form of f or narrow it down to a small number of candidates.
When the equation involves expressions like x and 1/x together, substituting x → 1/x creates a second equation you can pair with the original. This works because the substitution swaps the roles of x and 1/x, giving you a system of two equations in two unknowns (f(x) and f(1/x)) that you can solve simultaneously.
Exploit Symmetry Between Variables
Many functional equations in two variables carry a hidden symmetry. If the equation treats x and y in a similar way, swapping them can produce useful information. For instance, if f(x + y) = g(x) + g(y) + something symmetric, then swapping x and y and comparing the two versions often forces terms to cancel or match.
Symmetry also helps you determine whether a function is even or odd. If you can show from the equation that f(−x) = f(x) for all x, the function is even. If f(−x) = −f(x), it’s odd. You establish this by substituting −x into the original equation and comparing the result to the original. Knowing the parity of a function can cut the problem in half, since you only need to determine f on positive values.
Reduce to Cauchy’s Equation
A large number of functional equations are secretly variations of one fundamental equation discovered by Cauchy: f(x + y) = f(x) + f(y). Over the rational numbers, the only solutions are f(x) = cx for some constant c. Over the real numbers, you need an extra condition (continuity, monotonicity, or even just being bounded on some interval) to guarantee the same clean solution. Without such a condition, bizarre “pathological” solutions exist that assign values in a completely erratic way.
Three other common forms reduce directly to Cauchy’s equation through simple transformations:
- f(x + y) = f(x) · f(y) with f always positive: taking the logarithm of both sides gives log f(x + y) = log f(x) + log f(y), which is Cauchy’s equation for g = log f. The solutions are exponential functions.
- f(xy) = f(x) + f(y) with f defined on positive reals: substituting x = aᵘ and y = aᵛ converts multiplication into addition, reducing to Cauchy. The solutions are logarithmic functions.
- f(xy) = f(x) · f(y) with f positive on positive reals: taking the log reduces this to the previous case. The solutions are power functions of the form xᵏ.
Recognizing when an equation can be transformed into one of these four forms saves enormous effort. If your equation involves a mix of addition and multiplication, look for a substitution (logarithm, exponential, or a change of variable) that converts it into pure addition on both sides.
Prove Injectivity or Surjectivity
Sometimes you reach a point where you know f(a) = f(b) for two expressions a and b, but you need to conclude that a = b. This requires proving the function is injective (one-to-one), meaning different inputs always produce different outputs.
To prove injectivity from a functional equation, assume f(a) = f(b) and use the equation to show a = b. Often you can substitute specific values that turn the functional equation into a statement like “if f(x₁) = f(x₂), then plugging both into the equation forces x₁ = x₂.”
Surjectivity (the function hits every value in its range) is useful when you need to show that for any target value, some input achieves it. You prove this by picking an arbitrary output value and using the functional equation to construct an input that maps to it. For example, if the equation lets you express f(something involving y) for arbitrary y, and you can show this covers all real numbers, you’ve established surjectivity.
These properties are especially important in competition problems where the equation alone doesn’t fully determine f, but injectivity or surjectivity narrows the candidates to a single function.
The “Guess and Verify” Approach
After substituting several values, you’ll often notice a pattern: maybe f(1) = 1, f(2) = 4, f(3) = 9, suggesting f(x) = x². At this point, guess the general form and verify it works by substituting it back into the original equation. If the equation holds for all values of the variables, your guess is correct.
But verification alone doesn’t prove your solution is the only one. To establish uniqueness, you typically need one of three things: a proof that the function is fully determined by its value at one point (using the functional equation to propagate that value everywhere), a reduction to Cauchy’s equation with appropriate regularity conditions, or a proof that any solution must satisfy a property (like monotonicity or continuity) that pins it down.
For competition problems, the expected workflow is: substitute to discover the answer, then either prove uniqueness or show the derivation was forced at every step (meaning no other function could have satisfied all the intermediate equations you derived).
Handling Continuity Requirements
Whether or not you need to assume continuity depends on the domain. If the problem says f is defined on the rationals, or on the integers, you typically don’t need extra assumptions because the algebraic structure is rigid enough. Cauchy’s equation over the rationals, for instance, forces f(x) = cx with no continuity assumption needed, since you can reach any rational number through addition of unit fractions.
Over the real numbers, the situation changes. Cauchy’s equation has continuous solutions (f(x) = cx) and wildly discontinuous ones that require the axiom of choice to construct. These pathological solutions are “everywhere discontinuous” and impossible to write down explicitly. When a problem states that f is continuous, measurable, monotonic, or even just bounded on some interval, this is a signal to use that condition to rule out pathological solutions. Any one of these conditions forces the Cauchy equation (and its variants) back to the clean linear, exponential, logarithmic, or power function solutions.
A Step-by-Step Solving Framework
When you encounter a new functional equation, work through these steps in order:
- Substitute x = 0, y = 0: Find f(0). This is almost always informative.
- Substitute y = 0, then x = 0: See what each variable contributes independently.
- Substitute y = x: Learn about f(2x) in terms of f(x), or similar.
- Substitute y = −x: Discover parity or the relationship between f(x) and f(−x).
- Look for Cauchy-type structure: Can a substitution or transformation convert your equation into f(a + b) = f(a) + f(b) or one of its variants?
- Check injectivity/surjectivity: If you’re stuck, proving one of these often unlocks the next step.
- Guess, verify, prove uniqueness: Once you have a candidate function, confirm it satisfies the original equation and show no other function does.
The order matters. Early substitutions give you concrete data points. Structural observations (Cauchy reduction, injectivity) come next. The guess comes last, informed by everything you’ve already discovered. Resist the urge to guess too early, since premature guessing without proof of uniqueness is the most common mistake in functional equation problems.