Unique Solution, No Solution, or Infinite Solutions


Learning Objectives

By the end of this section you should be able to:

  1. Understand the diffrence between unique solutions, no solutions, and infinitely many solutions.
  2. Reconize when a matrix has a unique solutions, no solutions, or infinitely many solutions.
  3. Reconize when a matrix has a unique solutions, no solutions, or infinitely many solutions using python.

Unique Solution

The example shown previously in this module had a unique solution. The structure of the row reduced matrix was

\[\begin{split}\begin{vmatrix} 1 & 1 & -1 & | & 5 \\ 0 & 1 & -5 & | & 8 \\ 0 & 0 & 1 & | & -1 \end{vmatrix}\end{split}\]

and the solution was

\[x = 1\]
\[y = 3\]
\[z = -1\]

As you can see, each variable in the matrix can have only one possible value, and this is how you know that this matrix has one unique solution


No solution

Let’s suppose you have a system of linear equations that consist of:

\[x + y + z = 2\]
\[y - 3z = 1\]
\[2x + y + 5z = 0\]

The augmented matrix is

\[\begin{split}\begin{vmatrix} 1 & 1 & 1 & | & 2 \\ 0 & 1 & -3 & | & 1 \\ 2 & 1 & 5 & | & 0 \end{vmatrix}\end{split}\]

and the row reduced matrix is

\[\begin{split}\begin{vmatrix} 1 & 0 & 4 & | & 1 \\ 0 & 1 & -3 & | & 1 \\ 0 & 0 & 0 & | & -3 \end{vmatrix}\end{split}\]

As you can see, the final row states that

\[0x + 0y + 0z = -3\]

which impossible, 0 cannot equal -3. Therefore this system of linear equations has no solution.

Let’s use python and see what answer we get.

In [1]:
import numpy as py
from scipy.linalg import solve

A = [[1, 1, 1], [0, 1, -3], [2, 1, 5]]
b = [[2], [1], [0]]

x = solve(A,b)
x

---------------------------------------------------------------------------
LinAlgError                               Traceback (most recent call last)
<ipython-input-1-afc47691740d> in <module>()
      5 b = [[2], [1], [0]]
      6
----> 7 x = solve(A,b)
      8 x

C:\Users\Said Zaid-Alkailani\Anaconda3\lib\site-packages\scipy\linalg\basic.py in solve(a, b, sym_pos, lower, overwrite_a, overwrite_b, debug, check_finite, assume_a, transposed)
    217         return x
    218     elif 0 < info <= n:
--> 219         raise LinAlgError('Matrix is singular.')
    220     elif info > n:
    221         warnings.warn('scipy.linalg.solve\nIll-conditioned matrix detected.'

LinAlgError: Matrix is singular.

As you can see the code gives us an error suggesting there is no solution to the matrix.


Infinite Solutions

Let’s suppose you have a system of linear equations that consist of:

\[-3x - 5y + 36z = 10\]
\[-x + 7z = 5\]
\[x + y - 10z = -4\]

The augmented matrix is

\[\begin{split}\begin{vmatrix} -3 & -5 & 36 & | & 10 \\ -1 & 0 & 7 & | & 5 \\ 1 & 1 & -10 & | & -4 \end{vmatrix}\end{split}\]

and the row reduced matrix is

\[\begin{split}\begin{vmatrix} 1 & 0 & -7 & | & -5 \\ 0 & 2 & -3 & | & 1 \\ 0 & 0 & 0 & | & 0 \end{vmatrix}\end{split}\]

As you can see, the final row of the row reduced matrix consists of 0. This means that for any value of Z, there will be a unique solution of x and y, therefore this system of linear equations has infinite solutions.

Let’s use python and see what answer we get.

In [2]:
import numpy as py
from scipy.linalg import solve

A = [[-3, -5, 36], [-1, 0, 7], [1, 1, -10]]
b = [[10], [5], [-4]]

x = solve(A,b)
x

C:\Users\Said Zaid-Alkailani\Anaconda3\lib\site-packages\scipy\linalg\basic.py:223: RuntimeWarning: scipy.linalg.solve
Ill-conditioned matrix detected. Result is not guaranteed to be accurate.
Reciprocal condition number: 3.808655316038273e-19
  ' condition number: {}'.format(rcond), RuntimeWarning)
Out[2]:
array([[-12.],
       [ -2.],
       [ -1.]])

As you can see we get a different type of error from this code. It states that the matrix is ill-conditioned and that there is a RuntimeWarning. This means that the computer took to long to find a unique solution so it spat out a random answer. When RuntimeWarings occur, the matrix is likely to have infinite solutions.

In [ ]: