RREF and Sorting in Matlab
Make one pivot in the matrix \(A\):
1. Find the nonzero row with the smallest index, call it \(r\).
2. In row \(r\) find the nonzero entry with the smallest index, call it \(c\).
3. Multiply Row \(r\) by \(\dfrac{1}{A(r,c)}\).
In Matlab:
\[A(r,:)=1/A(r,c)\ast A(r,:);\]
4. For each \(s\neq r\) we replace Row \(s\) with
\[(\text{Row}\ s) - A(s,c)\cdot(\text{Row}\ r)\]
In Matlab:
\[A(s,:) = A(s,:) - A(s,c)\ast A(r,:);\]
A(r,:) = 1/A(r,c)*A(r,:);
for s=1:m
if s~=r
A(s,:) = A(s,:)-A(s,c)*A(r,:);
end
end
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ 5\\ 2\\ -1\\ 0\\ 3\\ -3\end{array}\right]\]
We want to sort the entries so that they are ascending, but how do we get Matlab to do it?
Is \(-3\leq 5\)?
Yes! So we do nothing
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ 5\\ 2\\ -1\\ 0\\ 3\\ -3\end{array}\right]\]
Is \(5\leq 2\)?
No! So we
swap them
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ 5\\ 2\\ -1\\ 0\\ 3\\ -3\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ 2\\ 5\\ -1\\ 0\\ 3\\ -3\end{array}\right]\]
Is \(5\leq 2\)?
No! So we
swap them
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ 2\\ 5\\ -1\\ 0\\ 3\\ -3\end{array}\right]\]
Is \(5\leq -1\)?
No! So we
swap them
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ 2\\ -1\\ 5\\ 0\\ 3\\ -3\end{array}\right]\]
Is \(5\leq -1\)?
No! So we
swap them
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ 2\\ -1\\ 5\\ 0\\ 3\\ -3\end{array}\right]\]
Is \(5\leq 0\)?
No! So we
swap them
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ 2\\ -1\\ 0\\ 5\\ 3\\ -3\end{array}\right]\]
Is \(5\leq 0\)?
No! So we
swap them
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ 2\\ -1\\ 0\\ 5\\ 3\\ -3\end{array}\right]\]
Is \(5\leq 3\)?
No! So we
swap them
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ 2\\ -1\\ 0\\ 3\\ 5\\ -3\end{array}\right]\]
Is \(5\leq 3\)?
No! So we
swap them
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ 2\\ -1\\ 0\\ 3\\ 5\\ -3\end{array}\right]\]
Is \(5\leq -3\)?
No! So we
swap them
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ 2\\ -1\\ 0\\ 3\\ -3\\ 5\end{array}\right]\]
Is \(5\leq -3\)?
No! So we
swap them
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ 2\\ -1\\ 0\\ 3\\ -3\\ 5\end{array}\right]\]
Are we done?
No, but how does Matlab know we aren't done?
We are done when we look at consecutive pair, and all of them are already in the right order.
That is, when we do a pass through the list and do no swaps.
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ 2\\ -1\\ 0\\ 3\\ -3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ 2\\ -1\\ 0\\ 3\\ -3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ 2\\ 0\\ 3\\ -3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ 2\\ 0\\ 3\\ -3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ 0\\ 2\\ 3\\ -3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ 0\\ 2\\ 3\\ -3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ 0\\ 2\\ 3\\ -3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ 0\\ 2\\ -3\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ 0\\ 2\\ -3\\ 3\\ 5\end{array}\right]\]
Done?
No!
(We did at least one swap)
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ 0\\ 2\\ -3\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ 0\\ 2\\ -3\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ 0\\ 2\\ -3\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ 0\\ 2\\ -3\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ 0\\ -3\\ 2\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ 0\\ -3\\ 2\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ 0\\ -3\\ 2\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ 0\\ -3\\ 2\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ 0\\ -3\\ 2\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ 0\\ -3\\ 2\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ -3\\ 0\\ 2\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ -3\\ 0\\ 2\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ -3\\ 0\\ 2\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ -3\\ 0\\ 2\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ -3\\ 0\\ 2\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -1\\ -3\\ 0\\ 2\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -3\\ -1\\ 0\\ 2\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -3\\ -1\\ 0\\ 2\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -3\\ -1\\ 0\\ 2\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -3\\ -1\\ 0\\ 2\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -3\\ -1\\ 0\\ 2\\ 3\\ 5\end{array}\right]\]
Done?
No!
The numbers are in the correct order, but how does Matlab know?
So we do another pass.
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -3\\ -1\\ 0\\ 2\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -3\\ -1\\ 0\\ 2\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -3\\ -1\\ 0\\ 2\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -3\\ -1\\ 0\\ 2\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -3\\ -1\\ 0\\ 2\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -3\\ -1\\ 0\\ 2\\ 3\\ 5\end{array}\right]\]
Example. Consider the list column vector
\[x=\left[\begin{array}{r}-3\\ -3\\ -1\\ 0\\ 2\\ 3\\ 5\end{array}\right]\]
Done?
Yes!
On the last pass we didn't do any swaps, so ever pair of consecutive entries is in the correct order.
Let \(x\in\R^{n}\), that is, \(x\) is an \(n\times 1\) vector. We wish to write the entries of \(x\) in ascending order.
For each \(r\) in \(\{1,2,\ldots,n-1\}\). Look at \(x(r)\) and \(x(r+1)\). If \(x(r)>x(r+1)\), then swap \(x(r)\) and \(x(r+1)\).
Matlab:
for r=1:(n-1)
if x(r)>x(r+1)
y=x;
x(r)=y(r+1);
x(r+1)=y(r);
end
end
If any swaps were done in that for loop, then do it again. If no swaps were done, then your list is sorted.
Assume we have a matrix \(A\) where each row of \(A\) either contains a pivot or is the zero row.
Example:
\[\begin{bmatrix} 0 & 1 & 0 & 6 & 0\\ 0 & 0 & 0 & 0 & 0\\ 1 & 0 & 0 & 3 & 0\\ 0 & 0 & 0 & 0 & 1\end{bmatrix}\]
How do we sort these rows so that we get a row equivalent matrix in RREF?
\[\begin{bmatrix} 2\\ 6\\ 1\\ 5\end{bmatrix}\]
Define a column vector, where the entry in row \(r\) is the column containing the pivot of row \(r\) in \(A\)
Assume we have a matrix \(A\) where each row of \(A\) either contains a pivot or is the zero row.
Example:
\[\begin{bmatrix} 0 & 1 & 0 & 6 & 0\\ 0 & 0 & 0 & 0 & 0\\ 1 & 0 & 0 & 3 & 0\\ 0 & 0 & 0 & 0 & 1\end{bmatrix}\]
How do we sort these rows so that we get a row equivalent matrix in RREF?
\[\begin{bmatrix} 2\\ 6\\ 1\\ 5\end{bmatrix}\]
Define a column vector, where the entry in row \(r\) is the column containing the pivot of row \(r\) in \(A\)
Assume we have a matrix \(A\) where each row of \(A\) either contains a pivot or is the zero row.
Example:
\[\begin{bmatrix} 0 & 1 & 0 & 6 & 0\\ 0 & 0 & 0 & 0 & 0\\ 1 & 0 & 0 & 3 & 0\\ 0 & 0 & 0 & 0 & 1\end{bmatrix}\]
How do we sort these rows so that we get a row equivalent matrix in RREF?
\[\begin{bmatrix} 2\\ 6\\ 1\\ 5\end{bmatrix}\]
Define a column vector, where the entry in row \(r\) is the column containing the pivot of row \(r\) in \(A\)
Assume we have a matrix \(A\) where each row of \(A\) either contains a pivot or is the zero row.
Example:
\[\begin{bmatrix} 0 & 1 & 0 & 6 & 0\\ 1 & 0 & 0 & 3 & 0 \\ 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 1\end{bmatrix}\]
How do we sort these rows so that we get a row equivalent matrix in RREF?
\[\begin{bmatrix} 2\\ 1\\ 6\\ 5\end{bmatrix}\]
Define a column vector, where the entry in row \(r\) is the column containing the pivot of row \(r\) in \(A\)
Assume we have a matrix \(A\) where each row of \(A\) either contains a pivot or is the zero row.
Example:
\[\begin{bmatrix} 0 & 1 & 0 & 6 & 0\\ 1 & 0 & 0 & 3 & 0 \\ 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 1\end{bmatrix}\]
How do we sort these rows so that we get a row equivalent matrix in RREF?
\[\begin{bmatrix} 2\\ 1\\ 6\\ 5\end{bmatrix}\]
Define a column vector, where the entry in row \(r\) is the column containing the pivot of row \(r\) in \(A\)
Assume we have a matrix \(A\) where each row of \(A\) either contains a pivot or is the zero row.
Example:
\[\begin{bmatrix} 0 & 1 & 0 & 6 & 0\\ 1 & 0 & 0 & 3 & 0 \\ 0 & 0 & 0 & 0 & 1\\ 0 & 0 & 0 & 0 & 0\end{bmatrix}\]
How do we sort these rows so that we get a row equivalent matrix in RREF?
\[\begin{bmatrix} 2\\ 1\\ 5\\ 6\end{bmatrix}\]
Define a column vector, where the entry in row \(r\) is the column containing the pivot of row \(r\) in \(A\)
Assume we have a matrix \(A\) where each row of \(A\) either contains a pivot or is the zero row.
Example:
\[\begin{bmatrix} 0 & 1 & 0 & 6 & 0\\ 1 & 0 & 0 & 3 & 0 \\ 0 & 0 & 0 & 0 & 1\\ 0 & 0 & 0 & 0 & 0\end{bmatrix}\]
How do we sort these rows so that we get a row equivalent matrix in RREF?
\[\begin{bmatrix} 2\\ 1\\ 5\\ 6\end{bmatrix}\]
Define a column vector, where the entry in row \(r\) is the column containing the pivot of row \(r\) in \(A\)
Assume we have a matrix \(A\) where each row of \(A\) either contains a pivot or is the zero row.
Example:
\[\begin{bmatrix} 1 & 0 & 0 & 3 & 0 \\ 0 & 1 & 0 & 6 & 0\\ 0 & 0 & 0 & 0 & 1\\ 0 & 0 & 0 & 0 & 0\end{bmatrix}\]
How do we sort these rows so that we get a row equivalent matrix in RREF?
\[\begin{bmatrix} 1\\ 2\\ 5\\ 6\end{bmatrix}\]
Define a column vector, where the entry in row \(r\) is the column containing the pivot of row \(r\) in \(A\)
Assume we have a matrix \(A\) where each row of \(A\) either contains a pivot or is the zero row.
Example:
\[\begin{bmatrix} 1 & 0 & 0 & 3 & 0 \\ 0 & 1 & 0 & 6 & 0\\ 0 & 0 & 0 & 0 & 1\\ 0 & 0 & 0 & 0 & 0\end{bmatrix}\]
How do we sort these rows so that we get a row equivalent matrix in RREF?
\[\begin{bmatrix} 1\\ 2\\ 5\\ 6\end{bmatrix}\]
Define a column vector, where the entry in row \(r\) is the column containing the pivot of row \(r\) in \(A\)
Assume we have a matrix \(A\) where each row of \(A\) either contains a pivot or is the zero row.
Example:
\[\begin{bmatrix} 1 & 0 & 0 & 3 & 0 \\ 0 & 1 & 0 & 6 & 0\\ 0 & 0 & 0 & 0 & 1\\ 0 & 0 & 0 & 0 & 0\end{bmatrix}\]
How do we sort these rows so that we get a row equivalent matrix in RREF?
\[\begin{bmatrix} 1\\ 2\\ 5\\ 6\end{bmatrix}\]
Define a column vector, where the entry in row \(r\) is the column containing the pivot of row \(r\) in \(A\)
Assume we have a matrix \(A\) where each row of \(A\) either contains a pivot or is the zero row.
Example:
\[\begin{bmatrix} 1 & 0 & 0 & 3 & 0 \\ 0 & 1 & 0 & 6 & 0\\ 0 & 0 & 0 & 0 & 1\\ 0 & 0 & 0 & 0 & 0\end{bmatrix}\]
How do we sort these rows so that we get a row equivalent matrix in RREF?
\[\begin{bmatrix} 1\\ 2\\ 5\\ 6\end{bmatrix}\]
Define a column vector, where the entry in row \(r\) is the column containing the pivot of row \(r\) in \(A\)
Assume we have a matrix \(A\) where each row of \(A\) either contains a pivot or is the zero row.
Example:
\[\begin{bmatrix} 1 & 0 & 0 & 3 & 0 \\ 0 & 1 & 0 & 6 & 0\\ 0 & 0 & 0 & 0 & 1\\ 0 & 0 & 0 & 0 & 0\end{bmatrix}\]
How do we sort these rows so that we get a row equivalent matrix in RREF?
\[\begin{bmatrix} 1\\ 2\\ 5\\ 6\end{bmatrix}\]
Define a column vector, where the entry in row \(r\) is the column containing the pivot of row \(r\) in \(A\)
Assume we have a matrix \(A\) where each row of \(A\) either contains a pivot or is the zero row.
Example:
\[\begin{bmatrix} 1 & 0 & 0 & 3 & 0 \\ 0 & 1 & 0 & 6 & 0\\ 0 & 0 & 0 & 0 & 1\\ 0 & 0 & 0 & 0 & 0\end{bmatrix}\]
How do we sort these rows so that we get a row equivalent matrix in RREF?
\[\begin{bmatrix} 1\\ 2\\ 5\\ 6\end{bmatrix}\]
Define a column vector, where the entry in row \(r\) is the column containing the pivot of row \(r\) in \(A\)
In RREF
Assume the matrix we are row reducing is \(m\times n\). Then elementary matrices are \(m\times m\).
1) Swap rows \(r\) and \(s\):
Example: If \(m=6\) and we want to swap rows \(2\) and \(4\) then the elementary matrix is:
\[E=\begin{bmatrix} 1 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 1 & 0 & 0\\ 0 & 0 & 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 0 & 0 & 1\end{bmatrix}\]
E = eye(m);
E(r,r)=0;
E(s,s)=0;
E(r,s)=1;
E(s,r)=1;
Matlab:
Assume the matrix we are row reducing is \(m\times n\). Then elementary matrices are \(m\times m\).
2) Multiply row \(r\) by the nonzero scalar \(a\)
Example: If \(m=6\) and we want to multiply row \(2\) by \(\frac{1}{2}\)
\[E=\begin{bmatrix} 1 & 0 & 0 & 0 & 0 & 0\\ 0 & \frac{1}{2} & 0 & 0 & 0 & 0\\ 0 & 0 & 1 & 0 & 0 & 0\\ 0 & 0 & 0 & 1 & 0 & 0\\ 0 & 0 & 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 0 & 0 & 1\end{bmatrix}\]
E = eye(m);
E(r,r) = a;
Matlab:
Assume the matrix we are row reducing is \(m\times n\). Then elementary matrices are \(m\times m\).
3) Replace Row \(r\) with \((\text{Row}\ r) + a(\text{Row}\ s)\)
Example: If \(m=6\) and we want to Row \(3\) with \((\text{Row}\ 3) + (-2)(\text{Row}\ 6)\)
\[E=\begin{bmatrix} 1 & 0 & 0 & 0 & 0 & 0\\ 0 & 1 & 0 & 0 & 0 & 0\\ 0 & 0 & 1 & 0 & 0 & -2\\ 0 & 0 & 0 & 1 & 0 & 0\\ 0 & 0 & 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 0 & 0 & 1\end{bmatrix}\]
E = eye(m);
E(r,s) = a;
Matlab: