This site is a work in progress. New lessons are added regularly.
Contact us
Stretching and Reflecting Graphs
Learning goals
Scale heights with y=af(x), stretching when a>1
Flip across the x-axis with y=−f(x)
Compress toward the y-axis with y=f(bx) when b>1
Mirror across the y-axis with y=f(−x)
Read y=af(x−h)+k as vertex form for a parabola
Say which of domain and range each kind of scaling reshapes
Vertical stretches and compressions: scale the output
Start with the graph of y=f(x) and multiply every output by a positive constant a:
y=af(x).
Each input still passes through f, but whatever comes out is then multiplied by a. Because the output
is the height of the graph, scaling every output by a scales the height of every point by a. When
a>1 that makes the graph taller and steeper (a vertical stretch); when 0<a<1 it makes the
graph shorter and flatter (a vertical compression).
Let g(x)=af(x) with a>0, and pick any input x in the domain. The original graph has the point
(x,f(x)), sitting at height f(x) directly above the input. The new graph has the point (x,g(x)),
and since g(x)=af(x), that point is (x,af(x)). The two share the same first coordinate, so the
new point lies on the same vertical line as the old one, at a times its height.
Multiplying a height by a>1 pushes the point farther from the horizontal axis, and multiplying by an
a between 0 and 1 pulls it closer. Both follow because scaling a distance by a enlarges it when
a>1 and shrinks it when a<1. A point that already sits on the horizontal axis has height 0, and
a×0=0, so it does not move at all.
Since x was arbitrary, every height is scaled by the same factor a: the graph stretches vertically when
a>1 and compresses vertically when 0<a<1. In particular, every point on the horizontal axis,
including all x-intercepts, stays pinned exactly where it was.
∎
Reading points off the graph is immediate. If (x0,y0) lies on y=f(x), then (x0,ay0) lies
on y=af(x): keep the input, multiply the height by a.
The dashed parabola is y = x squared. Multiplying every output by 2 gives the solid parabola y = 2x squared, which rises twice as high above each input, so it looks narrower and steeper. The point (1, 1) rises to (1, 2), while the vertex (0, 0) stays fixed because twice a height of 0 is still 0.
Worked example 1Stretch and compress y=x2
Both new rules keep f(x)=x2 and only rescale its outputs, so shift the points you already know instead
of building a fresh table.
For y=2x2, multiply every height by 2. The vertex (0,0) stays at (0,0) because
2×0=0, while the anchor points (1,1) and (2,4) climb to
(1,2×1)=(1,2),(2,2×4)=(2,8).
The bowl passes through those higher points, so it looks narrower and steeper, though it still opens upward
from the same vertex.
For y=21x2, multiply every height by 21 instead. The same anchor points sink to
(1,21),(2,2),
so this bowl is wider and flatter. In both cases the vertex and the single x-intercept at the origin never
budge. Scaling a height of 0 leaves it at 0, so only the nonzero heights move.
Check your understanding
The point (3,4) lies on the graph of y=f(x). Which point must lie on the graph of y=5f(x)?
Multiplying by 5 outside the function is a vertical stretch, so keep the input and multiply the height by 5.
(3,5×4)=(3,20)
The input 3 does not change, which rules out (15,4) and (8,4); the height is multiplied, not added to, which rules out (3,9).
Reflecting across the x-axis: negate the output
The case a=−1 deserves its own name. The rule
y=−f(x)
negates every output, sending a point at height y0 to height −y0. A point above the horizontal axis
drops to the mirror-image spot the same distance below it, and a point below rises to the matching spot
above. That is exactly a reflection across the x-axis: the graph flips over that axis like a card
turning face down. Points sitting on the axis have height 0, and −0=0, so they stay fixed and act as
the hinge of the flip.
A negative scale factor with size other than 1 just does both jobs at once. Writing a=−∣a∣,
the rule y=af(x) scales every height by ∣a∣ and then negates it, so it stretches or
compresses vertically and reflects across the x-axis together.
The dashed parabola y = x squared opens upward with a lowest point at the origin. Negating every output gives the solid parabola y = negative x squared, the same bowl reflected across the x-axis so it opens downward with a highest point at the origin. The point (1, 1) flips to (1, negative 1).
Worked example 2Reflect y=x2 across the x-axis
The rule y=−x2 is y=−f(x) with f(x)=x2, so it takes the familiar upward bowl and negates every
output. Track a few points by flipping the sign of each height:
(1,1)⟶(1,−1),(2,4)⟶(2,−4).
The vertex (0,0) stays put, since −0=0. Plotting the flipped points gives the same parabola turned
upside down, so it now opens downward. The origin that used to be its lowest point is now its highest.
Nothing about the width changed, because reflecting only reverses the sign of each height without rescaling
it. What was a minimum has become a maximum, purely from the minus sign.
Horizontal stretches and compressions: the direction that looks backward again
Now change the input instead of the output. Replace x with bx for a positive constant b:
y=f(bx).
Here is the trap, and it mirrors the one from the shift lesson. You might expect multiplying the input by a
large b to stretch the graph wider. It does the opposite: for b>1 the graph is squeezed narrower,
pulled in toward the vertical axis. Rather than memorize that, derive it, because the derivation shows
precisely why the direction feels reversed.
Let g(x)=f(bx) with b>0. Fix any input a, so the original graph has the point (a,f(a)) at
height f(a). Ask the key question: at which input x does the new function g produce that same height
f(a)?
The function f returns the value f(a) when its input equals a. But the input handed to f inside g
is not x; it is bx. So g(x) produces that same height when the inside matches a:
bx=a⟹x=ba.
Therefore g(ba)=f(b⋅ba)=f(a), which means the new
graph has the point (ba,f(a)). Compare it with the old point (a,f(a)): both
sit at the same height. The new point, though, is at input ba, the old input scaled by the
factor b1.
When b>1 the factor b1 is less than 1, so ba is closer to 0 than a was.
Every point is therefore pulled toward the vertical axis, a horizontal compression. When 0<b<1 the factor
b1 is greater than 1, so ba is farther from 0: every point is pushed away, a
horizontal stretch. A point on the vertical axis has a=0, and b0=0, so it never moves.
The direction feels backward for exactly the reason it did with shifts. To make the inside bx reach a
value it used to reach at input a, and since b multiplies x, you need a smallerx when b>1.
So each feature of the graph shows up at a smaller input, nearer the axis.
∎
Replacing x with 2x pulls the whole curve in toward the y-axis by a factor of one half. The dashed curve y = f(x) has its peak at input 2; on the solid curve y = f(2x) that peak reappears at input 1, because the inside 2x equals 2 exactly when x = 1. Every input is halved, so b = 2 compresses the graph rather than stretching it.
Worked example 3Locate points and intercepts on y=f(2x) and y=f(2x)
Suppose (8,5) lies on y=f(x), and suppose f has x-intercepts at x=2 and x=6. Handle the two
scalings by asking, in each case, what input makes the inside equal an old input.
For y=f(2x), a point reappears where 2x equals the old input. To get the height 5 back, set the
inside equal to 8:
2x=8⟹x=4,
so (8,5) moves to (4,5), half the input. The x-intercepts move the same way: 2x=2 gives x=1
and 2x=6 gives x=3, so the zeros at 2 and 6 are pulled in to 1 and 3. With b=2>1 the
whole graph is compressed toward the vertical axis by a factor of 21.
For y=f(2x), the inside is 2x, so b=21. Now
2x=8 gives x=16, so (8,5) moves out to (16,5). The zeros stretch out too, to x=4
and x=12. Because 0<b<1, the graph is stretched away from the vertical axis by a factor of
b1=2.
Check your understanding
How is the graph of y=f(4x) related to the graph of y=f(x)?
Multiplying the input by b=4 scales every input by b1=41, so each point is pulled toward the vertical axis.
4x=a⇒x=4a
Because b=4>1 this compresses the graph horizontally rather than stretching it, and the change is horizontal, not vertical, so it is not a vertical stretch or a shift.
Reflecting across the y-axis: negate the input
The case b=−1 is the horizontal partner of the x-axis reflection. The rule
y=f(−x)
feeds f the opposite input. Following the derivation above, a point (a,f(a)) reappears where the inside
−x equals a, that is, at x=−a, so it moves to (−a,f(a)). Every point keeps its height but lands
at the opposite horizontal position, which is a reflection across the y-axis: the graph flips left to
right. A point already on the vertical axis has a=0, and −0=0, so it stays fixed and serves as the
hinge.
The dashed curve y = f(x) leans to the right, with its peak above input 2. Replacing x with negative x gives the solid curve y = f(negative x), the same shape flipped left to right across the y-axis, with its peak above input negative 2. Each point keeps its height and swaps to the opposite side of the vertical axis.
Worked example 4Reflect a graph across the y-axis
Suppose f passes through (3,5) and (−1,2), and its only x-intercept is at x=4. Describe the
graph of y=f(−x).
Reflection across the y-axis keeps every height and flips the sign of every input, so map each feature by
negating its first coordinate:
(3,5)⟶(−3,5),(−1,2)⟶(1,2).
The x-intercept at x=4 moves to x=−4, since setting the inside −x=4 gives x=−4. Any point
that happened to sit on the y-axis, where the input is 0, would not move at all. So y=f(−x) is the
mirror image of y=f(x) across the vertical axis, with the whole picture swapped left for right while
every height is preserved.
Check your understanding
The point (−6,2) lies on the graph of y=f(x). Which point must lie on the graph of y=f(−x)?
Negating the input reflects the graph across the y-axis, which flips the sign of the input while the height stays the same.
(−6,2)⟶(6,2)
The height 2 is unchanged, which rules out the options that negate it; only the horizontal position flips sides.
Combining a scaling with a shift
Scalings and shifts stack, so a rule can do several things at once. Reading it correctly means separating
what happens to the output from what happens to the input. For a vertical scaling followed by a shift,
y=af(x−h)+k,
the inside x−h moves the graph right by h, while the outside multiplies each height by a and then
adds k. Tracking a single point makes the order clear: a point (p,q) on y=f(x) reappears at
(p+h,aq+k).
The input picks up the shift h, and the output is first scaled by a (which also flips it when a is
negative) and then raised by k. The horizontal part touches only the first coordinate and the vertical
part only the second, exactly as with pure shifts.
For a parabola this is the vertex form you already know, now read as a transformation. The rule
y=a(x−h)2+k takes y=x2, scales it vertically by a (reflecting it downward when a<0), then
moves the vertex to (h,k). The number a controls how narrow the bowl is and which way it opens; h and
k say where its vertex sits.
The dashed parabola y = x squared opens upward from the origin. The rule y = negative 2x squared multiplies every output by negative 2, so it reflects across the x-axis and stretches to twice the height, giving the solid downward parabola. The point (1, 1) lands at (1, negative 2), and the shared vertex at the origin is now a maximum instead of a minimum.
Worked example 5Graph y=−2x2
Read the rule y=−2x2 as y=ax2 with a=−2, a single number that does two jobs. Its size,
∣a∣=2, stretches the bowl vertically to twice its height, and its sign, negative, reflects
it across the x-axis so it opens downward.
Apply both to the anchor points of y=x2. Multiply each height by −2:
(1,1)⟶(1,−2),(2,4)⟶(2,−8).
The vertex (0,0) holds still, since −2×0=0. Plotting the results gives a downward parabola,
narrower than y=x2, whose highest point is the origin. What was the minimum of the plain bowl has become
a maximum, and the graph is twice as steep, all encoded in the single coefficient −2.
A scaling also reshapes the domain and range, and each type touches only one of them. A vertical scaling by
a multiplies every output by a, so it scales the range. A horizontal scaling by b divides every
input by b, so it scales the domain. A reflection swaps the endpoints of whichever interval it acts on.
Worked example 6Track the domain and range through a scaling
Suppose f has domain 0≤x≤8 and range −2≤y≤6. Describe the domain and range of two
transformed graphs.
For y=−2f(x), only the outputs change, so the domain stays 0≤x≤8. Each output is multiplied by
−2, which scales the range endpoints and swaps them because the factor is negative:
−2×(−2)=4,−2×6=−12,
so the new range runs from the lower value up, −12≤y≤4. The reflection is what turned the top of
the old range into the bottom of the new one.
For y=f(2x), only the inputs change, so the range stays −2≤y≤6. Each input is divided by 2
(the inside 2x reaches the old inputs at half the x), so the domain endpoints halve:
0≤x≤8⟶0≤x≤4.
The graph is squeezed into half the horizontal room while covering the same heights.
The scalings and reflections are worth keeping in one place. In each row, a>1 and b>1.
Rule
Effect on the graph of y=f(x)
y=af(x)
vertical stretch by a (taller)
y=a1f(x)
vertical compression by a (shorter)
y=−f(x)
reflection across the x-axis
y=f(bx)
horizontal compression by b (narrower)
y=f(bx)
horizontal stretch by b (wider)
y=f(−x)
reflection across the y-axis
Check your understanding
The parabola y=−3x2 transforms y=x2. Which description is correct?
Write −3x2 as ax2 with a=−3. The size ∣a∣=3 is a vertical stretch, and the negative sign reflects the graph across the x-axis so it opens downward.
(1,1)⟶(1,−3)
The factor multiplies the output, not the input, so it is a vertical stretch, not a y-axis reflection or a shift. An output factor above 1 stretches rather than compresses.
Common mistakes
Practice
Multiple Choice Questions (MCQ)
Progressively harder sets of questions. Each opens on its own page.
Longer questions in parts, to be worked out on paper. Progressive hints, the answer on its
own so you can check yourself and try again, then the full worked solution, plus a rubric
to mark your own work against.
A painter who needs a hundred different faces cannot invent every one from nothing. Albrecht Durer, a
German painter who studied geometry, wondered whether a face could be altered by rule instead of by
guesswork.
His answer appeared in 1528, in a book about human proportion. Durer drew a head over a square grid. Then
he copied it across, square by square, onto a grid whose spacing he had deliberately changed. Pull the
columns apart and the face broadens. Squeeze the rows together and it turns squat. Slant the whole grid and
the head leans. Every one of those heads is the same head, redrawn against different spacings.
Those grids carry the exact distinction this lesson draws. Stretch both directions by the same factor and
the shape survives untouched, since only its size has changed. Stretch one direction alone and the shape
itself is remade. That is why y=2f(x) and y=f(2x) do such different things to a single curve. It is
also why a squeeze in one direction alone turns a careful portrait into a caricature.
Durer had a grid and a patient hand, and no equations whatever. You have the rule instead. Multiply the
output by a and every height is scaled by a. Multiply the input by b and every width is divided by
b. Put a minus sign on either one and the same operation arrives with a mirror attached.