Table of Contents
A quadratic equation is any equation that can be written as ax² + bx + c = 0, where a is not zero. The x² is what makes it quadratic, and it is why these equations usually have two answers rather than one. They turn up everywhere from the path of a thrown ball to the area of a garden, and they are a core topic in GCSE, IGCSE, Class 10 CBSE and US Algebra 1.
This guide covers the three standard methods, factorising, the quadratic formula and completing the square, with worked examples and a clear way to choose between them. A few lines of Python check every answer, and a real-world example shows why getting two answers makes perfect sense.
What makes an equation quadratic
In ax² + bx + c = 0, the letters a, b and c are numbers, called coefficients. For x² − 5x + 6 = 0, a = 1, b = −5 and c = 6. Always rearrange so one side is zero before you start; for example, x² = 5x − 6 must become x² − 5x + 6 = 0. The graph of y = ax² + bx + c is a U-shaped curve called a parabola, and the solutions are where it crosses the x-axis.
Method 1: factorising
If you can write the quadratic as two brackets multiplied together, the solutions come straight out, because if two things multiply to zero, one of them must be zero. For x² + bx + c, look for two numbers that multiply to c and add to b.
For x² − 5x + 6: the pairs that multiply to 6 are 1 and 6, 2 and 3, −1 and −6, −2 and −3. Only −2 and −3 add to −5. So x² − 5x + 6 = (x − 2)(x − 3) = 0, giving x = 2 or x = 3. A computer can do the same search:
from formula import show
# Factorise x^2 + bx + c: find two whole numbers that multiply to c and add to b
def factor_pair(b, c):
for p in range(-abs(c), abs(c) + 1):
if p != 0 and c % p == 0 and p + c // p == b:
return p, c // p
return None
for b, c in [(-5, 6), (1, -12), (7, 10), (2, -4)]:
pair = factor_pair(b, c)
if pair:
p, q = pair
bracket = lambda n: f"(x {'-' if n < 0 else '+'} {abs(n)})"
print(f"{show(1, b, c)} = {bracket(p)}{bracket(q)} so x = {-p} or x = {-q}")
else:
print(f"{show(1, b, c)}: no whole-number pair, use the formula")
x^2 - 5x + 6 = (x - 3)(x - 2) so x = 3 or x = 2
x^2 + x - 12 = (x - 3)(x + 4) so x = 3 or x = -4
x^2 + 7x + 10 = (x + 2)(x + 5) so x = -2 or x = -5
x^2 + 2x - 4: no whole-number pair, use the formula
Notice the last line. x² + 2x − 4 has no whole-number pair, because its solutions are not whole numbers. Factorising is the fastest method when it works, but it does not always work.
Method 2: the quadratic formula
The quadratic formula works for every quadratic equation:
The quadratic formula
For ax² + bx + c = 0: x = (−b ± √(b² − 4ac)) / 2a. The ± means you do the calculation twice, once with + and once with −, to get the two solutions.
For x² + 2x − 4 = 0: a = 1, b = 2, c = −4. Then b² − 4ac = 4 + 16 = 20, so x = (−2 ± √20) / 2 = −1 ± √5. That is about 1.236 and -3.236. The formula turned an equation that would not factorise into two exact answers. Here it is in code, handling every case:
import math
def show(a, b, c):
"""Write ax^2 + bx + c the way you would by hand."""
s = ("" if a == 1 else str(a)) + "x^2"
s += f" {'-' if b < 0 else '+'} " + ("" if abs(b) == 1 else str(abs(b))) + "x" if b else ""
s += f" {'-' if c < 0 else '+'} {abs(c)}" if c else ""
return s
def solve_quadratic(a, b, c):
"""Real solutions of ax^2 + bx + c = 0."""
d = b * b - 4 * a * c # the discriminant
if d < 0:
return d, []
if d == 0:
return d, [-b / (2 * a)]
root = math.sqrt(d)
return d, sorted([(-b - root) / (2 * a), (-b + root) / (2 * a)])
if __name__ == "__main__":
for a, b, c in [(1, -5, 6), (1, 2, -4), (1, 6, 9), (1, 2, 5)]:
d, xs = solve_quadratic(a, b, c)
shown = ", ".join(f"{x:.4g}" for x in xs) or "no real solutions"
print(f"{show(a, b, c)} = 0".ljust(20), f"discriminant {d:>3} x = {shown}")
x^2 - 5x + 6 = 0 discriminant 1 x = 2, 3
x^2 + 2x - 4 = 0 discriminant 20 x = -3.236, 1.236
x^2 + 6x + 9 = 0 discriminant 0 x = -3
x^2 + 2x + 5 = 0 discriminant -16 x = no real solutions
The discriminant: how many solutions?
The part under the square root, b² − 4ac, is called the discriminant, and it tells you what to expect before you solve anything:
- Positive (like 1 or 20 above): two different solutions. The parabola crosses the x-axis twice.
- Zero (like x² + 6x + 9): exactly one solution, x = −3. The parabola just touches the axis.
- Negative (like −16 for x² + 2x + 5): no real solutions, because you cannot take the square root of a negative number with ordinary numbers. The parabola never reaches the axis.
In later maths, negative discriminants lead to complex numbers, but at GCSE and Class 10 level the answer is simply "no real solutions".
Method 3: completing the square
Completing the square rewrites the equation so that x appears only once, inside a squared bracket. It is also where the quadratic formula comes from. Take x² + 6x + 2 = 0. Picture x² + 6x as a square of side x with two strips of 3 by x attached: it is a bigger square with one corner missing, and that corner is 3 × 3 = 9.
- Halve the x coefficient: half of 6 is 3. The missing corner is 3² = 9.
- Add and subtract it: x² + 6x + 9 − 9 + 2 = 0, which is (x + 3)² − 7 = 0.
- Rearrange: (x + 3)² = 7, so x + 3 = ±√7.
- Solve: x = −3 ± √7, about -0.354 or -5.646.
Completing the square is also the easiest way to find the turning point of a parabola: (x + 3)² − 7 has its lowest point at x = −3, y = −7.
A real example: a ball thrown upwards
Throw a ball straight up at 20 metres per second and its height after t seconds is roughly h = 20t − 5t² (5 is about half of gravity's 9.8, rounded to keep the numbers simple). When is the ball 15 metres high?
# A ball is thrown up at 20 m/s. Its height after t seconds is roughly h = 20t - 5t^2.
# (Using 5 for half of gravity's 9.8 keeps the numbers simple.)
import math
def times_at_height(h):
# 20t - 5t^2 = h becomes 5t^2 - 20t + h = 0
a, b, c = 5, -20, h
d = b * b - 4 * a * c
if d < 0:
return []
return sorted({(-b - math.sqrt(d)) / (2 * a), (-b + math.sqrt(d)) / (2 * a)})
for h in (0, 15, 20, 25):
ts = times_at_height(h)
print(f"height {h:>2} m: " + (", ".join(f"t = {t:g} s" for t in ts) if ts else "never reached"))
height 0 m: t = 0 s, t = 4 s
height 15 m: t = 1 s, t = 3 s
height 20 m: t = 2 s
height 25 m: never reached
Both answers make sense: the ball passes 15 m at 1 second on the way up and at 3 seconds on the way down. It reaches 20 m exactly once, at the top (a zero discriminant), and never reaches 25 m (a negative one). The three cases of the discriminant are three real situations.
Which method should you use?
| Situation | Best method |
|---|---|
| Small whole numbers, and a pair jumps out | Factorising |
| Anything else, or the question says "to 2 decimal places" | The quadratic formula |
| The question asks for the turning point or "the form (x + p)² + q" | Completing the square |
| Checking an answer | Substitute it back into the original equation |
Always check
Put each solution back into the original equation. For x = 3 in x² − 5x + 6: 9 − 15 + 6 = 0. It takes seconds and catches sign mistakes, which are the most common error in this topic. If negatives cause trouble, our guide to negative numbers helps.
Two answers are not a complication. A parabola can cross a line twice, and a ball can be at the same height twice.
How we teach it
Quadratics suit two principles on our how we teach page. We show the same problem three ways until the aha lands, and quadratics come with exactly three methods. And students derive the rule themselves before they ever see it written down: completing the square on a general quadratic is how the formula appears, rather than being handed over to memorise. Our GCSE maths tuition runs one to one or in small groups of 5 to 10.
Frequently asked questions
Rearrange it to ax squared plus bx plus c = 0, then factorise it, use the quadratic formula, or complete the square. Factorising is quickest when it works; the formula always works; completing the square also gives the turning point.
x = (minus b plus or minus the square root of (b squared minus 4ac)) divided by 2a. It solves any quadratic equation ax squared plus bx plus c = 0 and gives both solutions at once.
The discriminant b squared minus 4ac tells you how many real solutions there are: two if it is positive, one if it is zero, and none if it is negative.
Because a parabola can cross the x-axis in two places. In real problems both often make sense, like a ball passing the same height once going up and once coming down.
For whole-number coefficients, it factorises neatly when the discriminant is a perfect square, such as 1, 4 or 9. Otherwise, use the formula.
It solves quadratic equations, finds the turning point of a parabola, and is how the quadratic formula is derived. It is required in GCSE Higher and many other syllabuses.
It can have no real solutions, when the discriminant is negative and the parabola never touches the x-axis. In advanced maths these equations have complex solutions.