Computing: Computer Basics

Computing Home   Home   Contact

Education and Science: Linear, quadratic and cubic equations in one variable.

This text explains the mathematical background needed to solve equations in one variable. It also includes some hints for the case, you intend to write a computer program (using Free Pascal) to do this for you. Simple command line implementations of programs solving linear, quadratic and cubic equations in 1 variable may be found in the Free Pascal Console Programs section of this site.

Solving linear equations.

Linear equations (or 1st degree equations) are equations of the form: ax + b = 0 (a, b: real numbers). Three possible cases:

a ≠ 0 1 root x = -b / a
a = 0 and b ≠ 0 the equation has no solution
a = 0 and b = 0 the equation has an infinity of solutions

Solving quadratic equations.

Quadratic equations (or 2nd degree equations) are equations of the form: ax2 + bx + c = 0 (a, b, c: real numbers; a ≠ 0). The usual way to solve such equations, is to calculate the so called discriminant:

  Δ = b2 - 4ac

The solutions of the equation are then given by: x = [-b ± √Δ] / 2a. This is called the quadratic formula.

It is obvious, that if Δ > 0 there are 2 solutions and only one, if Δ = 0. If Δ < 0, you get the square root of a negative number, which is not defined, if we consider real numbers only. Thus, there are three cases, depending on the sign of the discriminant:

Δ > 0 2 distinct roots x1 = (-b + √Δ) / 2a
x2 = (-b  - √Δ) / 2a
Δ = 0 1 (double) root x = -b / 2a
Δ < 0 the equation has no real roots

If we now consider complex numbers and knowing that i is defined such as i2 = -1, we can write for the case, where Δ < 0:

√Δ = √[-1·(-Δ)] = √[i2·(-Δ)] = √(i2) · √(-Δ) = √(-Δ)i       (with -Δ > 0 and √(-Δ) well existing).

Thus, the solutions of the quadratic equation are finally given by:

Δ > 0 2 distinct real roots x1 = (-b + √Δ) / 2a
x2 = (-b  - √Δ) / 2a
Δ = 0 1 (double) real root x = -b / 2a
Δ < 0 2 conjugate complex roots x1 = (-b / 2a) + [√(-Δ) / 2a]i
x2 = (-b / 2a)  - [√(-Δ) / 2a]i


  1. If in the quadratic equation a = 0, you get the case of a linear equation.
  2. Complex numbers are a mathematical extension of our every-day real numbers, defined by z = a + bi, a being called the real part and b the imaginary part of the complex. The number i, as said above, is defined by i = √(-1).

Solving cubic equations.

Cubic equations (or 3rd degree equations) are equations of the form: ax3 + bx2 + cx + d = 0 (a, b, c, d: real numbers; a ≠ 0).

In practice, it's rather rare that there is a need to solve cubic equations. In school, exercises are mostly special cases, such as d being 0. The equation may then be written as

x[ax2 + bx + c] = 0.

This product is equal to 0, if either of its operands is 0, what gives

Just a special case, but the type of the roots will be similar for all 3rd degree equations:

1. All cubic equations have (at least) 1 real root.
2. The other 2 roots are either both real (eventually equal and possibly also equal to the first root), or both complex (conjugates).

There are several more or less suitable methods to solve cubic equations. The one described here is based on the cubic formula (Cardano's formula), that allows a similar approach as the one we saw for quadratic equations: determination of a discriminant and, continuation of the calculations, depending on the discriminant's sign.

Finding an equivalent quadratic equation.

After a lots of trials and considerable algebraic labor, the mathematicians found a way to transform the cubic equation into a quadratic one and solving this one using the discriminant method. Here what you need to do the calculations manually or by program, algebraic details being mostly omitted.


  x = y - b/3a

it is possible to reduce the cubic equation ax3 + bx2 + cx + d = 0 to this simpler one: y3 + py + q = 0


  p = -b2/3a2 + c/a
  q = 2b3/27a3 - bc/3a2 + d/a

Now setting

  y = z - p/3z

it is possible to obtain the equation z6 + qz3 - p3/27

And this equation is a quadratic equation in z3!

Cubic formula and discriminant.

The equation in z may be solved using the quadratic formula shown above.

  z3 = -q/2 ± √Δ

The discriminant Δ being given by:

  Δ = q2/4 + p3/27

For the roots z, we get:

  z = ³√[-q/2 ± √Δ]

Together with y = z - p/3z and x = y - b/3a, this is called the cubic formula.

Of course, when solving the equation in z, you will get 6 roots. However, when you substitute these in the equation for y, at most three different y values will result, and you will get at most three distinct roots for x.

Determining the roots when Δ ≥ 0.

Obviously, a distinction must be made depending on Δ ≥ 0 or Δ < 0.

For Δ ≥ 0, you can select one of the two real square roots ±√Δ (for example √Δ) and then determine the 3 cubic roots for z3 = -q/2 + √Δ. The first of these roots z0 is the real cube root, the 2 others are given by z1 = ωz0 and z2 = ω2z0, where ω and ω2 are the complex cube roots of 1:

  ω = -1/2 + [√3/2]i and ω2 = -1/2 - [√3/2]i

Knowing the 3 values of z, you can calculate those of y and finally the 3 roots x of the original cubic equation.

In the case where Δ = 0, the second and third roots are 2 equal real numbers (that may or may not be equal to the first root). Thus: for Δ > 0, a cubic equation has 1 real and 2 conjugate complex roots; for Δ = 0, it has 3 real roots, 2 at least being equal.

Determining the roots when Δ < 0.

When Δ < 0, then √Δ is imaginary, and you have to find the cube roots z of the complex number -q/2 + [√(-Δ)]i.

Without giving the details, concerning the algebraic calculations to do, here what you need, to be able to calculate the roots. Setting

  r = √(|p|/3)
  θ = arccos[3√3·q / [2p√(-p))]]

you'll get as solution for the equation in y (mentionned above and allowing to calcuate the 3 roots x of the original equation):

  y = [r - (p/3r)]·cosψ

where ψ = θ/3, θ/3 + 120°, θ/3 + 240°.

Roots of a cubic equation (summary).

Δ > 0 1 real root and 2 conjugate complex roots
Δ = 0 3 real roots (at least 2 being equal)
Δ < 0 3 distinct real roots

In the calculations described, there is however a special case to consider. In order to find a quadratic equation, we have set y = z - p/3z. Thus, if it turns out that z = 0, it will not be possible to calculate y (and x)! This case must be considered apart (think of it, if you intend to write a computer program to solve cubic equations); calculations are easy: if z = 0, then you have Δ = (q/2)2, hence p = 0. The equation to solve will be y3 + q = 0, giving 3 equal real roots y = ³√(-q).


If in the equation ax3 + bx2 + cx + d = 0, a = 0, then you get a quadratic equation (if b ≠ 0), or a linear equation (if b = 0).

Linear, quadratic and cubic functions.

If we consider the mathematical functions y = ax + b, y = ax2 + bx + c and y = ax3 + bx2 + cx + d and plot them on a graph, than the roots of the linear, quadratic and cubic equations described are the x value of the intersection points of the curve and the x-axis (the values, for those the curve cuts or "touches" the x-axis).

Solving equations, using a computer program.

If you have some elementary programming skills, it should not be a big deal to write a computer program to solve linear, quadratic and cubic equations. Just ask the user for the equation coefficients and find the roots, doing the calculations described above. Some hints for Free Pascal users:

[The cubic formula text on this side is based on a document, that I found on the Internet. Title: Cubic and Quadratic formulas, author: James T. Smith, San Francisco State University]