Algebra week

First meeting

After this meeting students should:

  • Understand how to use the Sympy library to carry out basic Algebraic tasks.

  • Know what they need to do to prepare for their second tutorial.

Problem

Explain to students that we will be solving the following problem:

  1. Rationalise the following expression: \(\frac{1}{\sqrt{3} + 1}\).

  2. Consider the quadratic \(f(x) = -x ^ 2 + 8 x - 18\).

    1. Calculate the discriminant of the quadratic equation \(f(x)=0\). What does this tell us about the graph of \(f(x)\).

    2. By completing the square, confirm that \((4, -2)\) is the maximum of point of \(f(x)\).

Solution

Ask students to spend 5 minutes if they know/remember how to do this by hand. (This is just to get the students to think about it)

Now show how to get code to do this:

>>> import sympy
>>> expression = 1 / (sympy.sqrt(3) + 1)
>>> expression
1/(1 + sqrt(3))
>>> sympy.simplify(expression)
-1/2 + sqrt(3)/2

Discuss here how this differs if we used math.sqrt. Explain that sympy.simplify is essentially acting as a black box here.

Now to carry out the rest of the problem:

>>> x = sympy.Symbol("x")
>>> expression = - x ** 2 + 8 * x - 18
>>> expression
-x**2 + 8*x - 18
>>> sympy.discriminant(expression)
-8

Confirm results by hand.

Discuss what this implies:

  • Quadratic equation has no real roots.

  • Graph does not intersect the \(y=0\) line.

  • Concave parabola (sign of leading coefficient of quadratic).

Confirm by solving the quadratic equation:

>>> equation = sympy.Eq(lhs=expression, rhs=0)
>>> equation
Eq(-x**2 + 8*x - 18, 0)

>>> sympy.solveset(expression, x)
FiniteSet(4 + sqrt(2)*I, 4 - sqrt(2)*I)

Now to move on to next part of the problem: completing the square:

>>> a, b, c = sympy.Symbol("a"), sympy.Symbol("b"), sympy.Symbol("c")
>>> completed_square = a * (x - b) ** 2 + c
>>> completed_square
a*(-b + x)**2 + c

Let us expand and compare the coefficients:

>>> sympy.expand(completed_square)
a*b**2 - 2*a*b*x + a*x**2 + c

We see that \(a\) is \(-1\). Let us substitute this value in to the expression:

>>> completed_square.subs({a: -1})
c - (-b + x)**2

We can in fact overwrite the expression:

>>> completed_square = completed_square.subs({a: -1})
>>> completed_square
c - (-b + x)**2

If we now expand again and compare coefficients:

>>> sympy.expand(completed_square)
-b**2 + 2*b*x + c - x**2

We see that \(2b=8\). Despite the fact that this equation is relatively straightforward, let us solve it using sympy:

>>> equation = sympy.Eq(lhs=2 * b, rhs=8)
>>> sympy.solveset(equation, b)
FiniteSet(4)

We will substitute this value for \(b\) back in to the completed square, and expand again:

>>> completed_square = completed_square.subs({b: 4})
>>> completed_square
c - (x - 4)**2
>>> sympy.expand(completed_square)
c - x**2 + 8*x - 16

We see that \(c - 16=-18\). Let us again solve that equation using \(sympy\):

>>> equation = sympy.Eq(lhs=c - 16, rhs= -18)
>>> sympy.solveset(equation, c)
FiniteSet(-2)

We will substitute this value back in:

>>> completed_square = completed_square.subs({c: -2})
>>> completed_square
-(x - 4)**2 - 2
>>> sympy.expand(completed_square)
-x**2 + 8*x - 18

Come back: with time take any questions.

Point at resources.

After class email

Send the following email after class:

Hi all,

A recording of today's class is available at <>.

In this class I went over a demonstration of using Python to solve an
algebraic problem. I did the following mathematical techniques:

- Simplifying an exact numerical expression.
- Calculating the discriminant of a quadratic.
- Solving a symbolic equation.
- Substitute values in to a symbolic expression.

In preparation for your tutorial tomorrow please work through the second
chapter of the Python for mathematics book:
https://vknight.org/pfm/tools-for-mathematics/02-algebra/introduction/main.html

Please get in touch if I can assist with anything,
Vince