Vertical Shifts (Up and Down)
A vertical shift moves a graph up or down without changing its shape.
f(x) is the original function, then f(x) + k shifts the graph up by k units when k > 0 and down by |k| units when k < 0. The transformation is applied to the output of the function — every y-value increases or decreases by the same amount.If f(x) = x², then g(x) = x² + 3 is the same parabola shifted 3 units up, and h(x) = x² − 5 is the same parabola shifted 5 units down.
The vertex of f was at (0, 0); after the shifts, the vertex of g is at (0, 3) and the vertex of h is at (0, −5).
Notice that the x-coordinate doesn't change — only the y-coordinate.
Vertical shifts are the most intuitive transformation because they work exactly the way you would expect: adding a positive number moves the graph up, adding a negative number moves it down. The shape, orientation, and width of the graph remain completely unchanged. Every point on the graph moves by exactly the same vertical distance.
Horizontal Shifts (Left and Right)
A horizontal shift moves a graph left or right. Here's where students often get tripped up: the rule is counterintuitive.
f(x − h) shifts the graph right by h units when h > 0, and left by |h| units when h < 0. The sign inside the parentheses is opposite of what you might expect.g(x) = (x − 3)² shifts x² to the right by 3 (not left). The new vertex is at (3, 0).
Similarly, h(x) = (x + 4)² shifts the graph to the left by 4, with the new vertex at (−4, 0).
Why the opposite sign?
Why the opposite sign? Think of it this way: to get the same y-value as the original function, the input x needs to be larger by h to cancel the −h inside the parentheses. For example, f(x) = x² gives f(0) = 0. For g(x) = (x − 3)² to give the same value of 0, we need x = 3. So every feature of the graph moves 3 units to the right.
A helpful rule of thumb: transformations inside the function (affecting x) behave oppositely to what you expect. Transformations outside the function (affecting y) behave as expected.
Reflections Over the Axes
A reflection flips the graph across a line, creating a mirror image. There are two basic reflections in function transformations.
−f(x) reflects the graph across the x-axis. Every y-coordinate becomes its negative. If a point (a, b) was on the original graph, (a, −b) is on the reflected graph.f(x) = x² opens upward, but −f(x) = −x² opens downward — the parabola is flipped upside down.
f(−x) reflects the graph across the y-axis. Every x-coordinate becomes its negative. If a point (a, b) was on the original graph, (−a, b) is on the reflected graph.f(x) = √x only exists for x ≥ 0 (right side of the y-axis). After reflection, f(−x) = √(−x) only exists for x ≤ 0 (left side). It is the mirror image.
Even and odd functions
f(−x) = f(x), the function is even and is symmetric about the y-axis (reflecting it gives back the same function). If f(−x) = −f(x), the function is odd and is symmetric about the origin. Polynomials with only even powers are even functions (like x², x⁴). Polynomials with only odd powers are odd functions (like x, x³).Vertical Stretch and Compression
A vertical stretch or compression scales the graph vertically by multiplying the output by a constant.
a · f(x) behaves as follows: if |a| > 1, the graph is stretched vertically by a factor of a — it becomes taller and narrower-looking. If 0 < |a| < 1, the graph is compressed vertically by a factor of a — it becomes shorter and wider-looking. If a < 0, the graph is also reflected over the x-axis.f(x) = x² has its vertex at (0, 0) and passes through (1, 1) and (2, 4).
The function g(x) = 3x² is stretched vertically by a factor of 3 — it passes through (1, 3) and (2, 12).
The parabola looks "skinnier" because it rises faster.
h(x) = (1/2)x² is compressed vertically by a factor of 1/2 — it passes through (1, 1/2) and (2, 2).
The parabola looks "wider" because it rises more slowly.
Key insight: Vertical stretches and compressions don't move x-intercepts. Since the x-intercepts have y = 0, multiplying by a still gives 0, so these points stay put. Only non-zero y-values are affected. Vertical stretches multiply all y-coordinates by a, leaving x-coordinates unchanged.
Horizontal Stretch and Compression
A horizontal stretch or compression scales the graph horizontally by multiplying the input by a constant. Again, this is counterintuitive because transformations inside the function behave oppositely.
f(bx) behaves as follows: if |b| > 1, the graph is compressed horizontally by a factor of 1/b — it becomes narrower. If 0 < |b| < 1, the graph is stretched horizontally by a factor of 1/b — it becomes wider. If b < 0, the graph is also reflected over the y-axis.f(x) = sin(x) has period 2π.
The function g(x) = sin(2x) is compressed horizontally by a factor of 1/2 — its period becomes π.
The graph oscillates twice as fast.
h(x) = sin(x/2) is stretched horizontally by a factor of 2 — its period becomes 4π.
The graph oscillates half as fast.
Why the inverse?
Why the inverse? To get the same y-value from f(bx) as from f(x), the new input x must be 1/b times the original input. So if b = 2, the new x is half the original — the graph is squeezed toward the y-axis by a factor of 2.
Horizontal stretches and compressions don't move y-intercepts (since they occur at x = 0) but do scale all x-coordinates by 1/b.
Combining Multiple Transformations
Most problems involve multiple transformations applied together. The general form is g(x) = a · f(b(x − h)) + k, where a controls vertical stretch/reflection, b controls horizontal stretch/reflection, h controls horizontal shift, and k controls vertical shift.
The correct order of operations
- Horizontal shift
Horizontal shift (
x − h). - Horizontal stretch/compression
Horizontal stretch/compression (multiply by
b). - Horizontal reflection
Horizontal reflection (if
b < 0). - Vertical stretch/compression
Vertical stretch/compression (multiply by
a). - Vertical reflection
Vertical reflection (if
a < 0). - Vertical shift
Vertical shift (add
k).
A useful shortcut: inside operations happen in reverse order, outside operations happen in normal order.
Given g(x) = −2(x − 3)² + 5. Starting from f(x) = x²:
(1) shift right 3, giving (x − 3)²;
(2) stretch vertically by 2, giving 2(x − 3)²;
(3) reflect over x-axis, giving −2(x − 3)²;
(4) shift up 5, giving −2(x − 3)² + 5.
upside-down parabola with vertex (3, 5), stretched by 2The result is an upside-down parabola with vertex (3, 5), stretched vertically by a factor of 2.
Checking your work
Checking your work: Pick a specific point, apply each transformation step-by-step, and verify the result matches the transformed function. For (1, 1) on f(x) = x²: shift right 3 → (4, 1); stretch by 2 → (4, 2); reflect → (4, −2); shift up 5 → (4, 3). Check: g(4) = −2(1)² + 5 = 3. ✓
If you want to verify your function transformation work or see every step explained, scan the problem with Solver AI for an instant breakdown.