Python For GCSE
Quadratic Equations

Introduction

x2 - x - 6

In Maths, you might normally solve this by factorising.

(x+2)(x-3)=0

This would give you the following solutions,
x=-2,x=3

Look at the graph we get when we plot the function, y = x2 - x - 6,

quadratic equation graph

The shape of the graph is called a parabola. If the coefficient of x2 is negative, the parabola would be inverted. This parabola intercepts the x axis (y=0) at two points, the two solutions to the equation.

x2 + 2x + 1

(x + 1)(x + 1)

You only get a single solution, x=-1

When we draw the graph, this time the curve touches the x axis at its lowest point (highest point if the parabola is inverted).

quadratic equation graph

When we write a program to solve quadratic equations, we will need to deal with the fact that some quadratic equations only have a single solution.

x2 + x + 1

This equation cannot be factorised. There is no way that the -1 and 1 can be added or subtracted to make a total of 1.

Looking at the graph, we can see that the parabola does not intercept the x axis. We can’t solve the equation.

quadratic equation graph

Our program is going to have to be able to cope with this third type of equation too.

The Quadratic Formula

Given a quadratic equation expressed in the form,

ax2 + bx + c

The solutions can be directly calculated with the formula,

quadratic equation formula

The following shows how we use the formula for our three types of equation,

quadratic equation formula

Programming

The part of the formula that matters most is b2 - 4ac. This is known as the discriminant of the equation.

Our program needs to do something like the following,

d = b * b - 4 * a * c
IF d < 0 THEN
   OUTPUT "Cannot Solve"
ELSE IF d == 0 THEN
   x = -b / (2 * a)
   OUTPUT "x = " + x
ELSE
   rootd = square root of d
   x1 = (-b + rootd)/(2 * a)
   x1 = (-b - rootd)/(2 * a)
   OUTPUT "x = " + x1 + ", x = " + x2
END IF

And here is an outline in Python with some strategic splodges,

quadratic equation program

quadratic equation program