General:
To type an upper case letter, press ALPHA key, followed by the letter.
To begin entering the program, press the PGRM key, and select NEW from
the menu. The calculator will go into ALPHA mode and prompt you to
enter the name. Type in (for example) RREF and press ENTER.
The program now displays a colon ":" which must appear at the
beginning of each command.
To enter the program commands (all the words in the program that
start with a Capital Letter), press PRGM key, then select one of
the two menus:
Commands: Remarks and keying instructions: :Prompt M,N,R Program asks for M, N and R. "Prompt" is 2 on the (PRGM) I/O menu. :{M,N}->dim[E] Defines the dimensions of the matrix we want to row reduce. "{" and "}" are the 2nd( and 2nd) keys; for "->", press the STO key; "dim" is 3 in the (MATRX) MATH menu. :Prompt [E] Program asks for the matrix [E] (for instructions how to enter [E] see below!). :1->I Sets I to 1; I will be the current row during row reduction. :1->J J will be the current column. :While(I<=M and J<=N) Specifies how long we have to row reduce. "While" is 5 on the (PRGM) CTL menu. You find "<=" as 6 in the (TEST) TEST menu and "and" as 1 in the (TEST) LOGIC menu. :I->K Initiates the check if we have to swap the I-th and the K-th column. :While(K<=M-1 and round([E](K,J),R)=0) Checks if, up to the specified exactness R, the current matrix element is zero. You find "round" as 1 in the (MATH) NUM menu, and the "=" that we need here as 1 in the (TEST) TEST menu. :K+1->K If the matrix element is zero, go down one step in the current column. :End End of last "While" loop; "End" is 7 in menu (PRGM) CTL. :If(K=M and round([E](K,J),R)=0) "If" is 1 in the (PRGM) CTL menu; :Goto P "Goto" is 0 in the (PRGM) CTL menu. The last two lines check if we have to go to the next column to be able to proceed. :rowSwap([E],I,K)->[E] Swaps the current row with the first row that does not have a leading zero in the current column; "rowSwap" is 8 in the (MATRX) MATH menu. :*row(1/[E](I,J),[E],I)->[E] Sets the first entry in the current row =1; "*row" is 0 in the (MATRX) MATH menu. :For(H,1,I-1,1) Initiates the first loop: Row reduction on the rows above the current one. "For" is 4 in the (PRGM) CTL menu. :*row+(-[E](H,J),[E],I,H)->[E] Adds the proper multiple of the I-th row to the H-th row. "*row+" is A in the (MATRX) MATH menu. Careful: "-" is the (-) key here, NOT the - key!! :0->[E](H,J) This matrix element should be zero from the last step; however, due to rounding errors, it often is not. This step guarantees it, by "brute force". :End Ends the first "For" loop. :For(H,I+1,M,1) Initiates the second loop: Row reduction on the rows below the current one. :*row+(-[E](H,J),[E],I,H)->[E] The next steps correspond to the steps :0->[E](H,J) in the first loop. :End Ends the second "For" loop. :I+1->I Go to the next row. :Lbl P This spot in the program is labelled P. "Lbl" is 9 in the (PRGM) CTL menu. :J+1->J Go to the next column. :End Ends the first "While" loop at the beginning of the program. :round([E],R)->[E] Rounds the matrix to the exactness we specified. :Disp "RREF",[E] Output of the row reduced echelon form of our matrix. "Disp" is 3 in the (PRGM) I/O menu, " is ALPHA +Ending: After pressing the ENTER key for the last command, press the QUIT (2nd MODE) key.
Running the program:
To run the program, press PRGM, select EXEC, and then RREF, or the name
that you choose for this program (it is selected automatically if it is
the only program you have.) The screen will display a prompt "prgmRREF".
Press ENTER. Enter the M, N, R you want at the question mark (?) prompts.
Here, M is the number of rows and N the number of columns that the matrix
you want to row reduce has; R specifies the number of decimal places to
which your result should be correct, and can be any integer between 1 and 9
(one usually will choose the maximum, R=9; see remarks below!).
Next, the program will ask you for the matrix [E] that you want to row
reduce. You can enter [E] either directly, by using the "[" and "]"
keys (= 2nd x and 2nd -, respectively) as follows: the input
[[1,2,3][4,5,6]]will enter the matrix
[ 1 2 3 ] [ 4 5 6 ]Alternatively, you may enter the matrix under some other name in the (MATRX) EDIT menu, say as matrix [A], and then just select (MATRX) NAMES 1 at the "[E]=?" prompt. The latter method is recommended, since otherwise the input-matrix will be "lost" after the program is executed.
Remarks on rounding errors:
Unfortunately, the Gauss Jordan Elimination Algorithm is not stable with
respect to rounding errors; that means that accumulated rounding errors
do not only change the numbers of the output a little, but they can
in fact dramatically change the outcome: Instead of e.g. infinitely many
solutions (with "free parameters"), you might seemingly obtain a "unique
solution"! The boldfaced parts of the program above are included
to minimize the effect of these rounding errors, but they cannot completely
eliminate them. If you are in doubt that you got the correct type of
solution, run the program again, with a smaller value of R. However, for most
matrices the maximum value of R=9 will give you the correct outcome.
If you always want to run the program with R=9, delele ",R" from the
first line, and add the line ":9->R" as a new second line.
If you want to run the program without these rounding procedures, just
delete all boldfaced parts. If you want to have both options,
copy the program under another name (like "XREF" or so; please see the
Manual Guidebook of your TI-82 on how to copy a program), and just delete
all boldfaced parts in the second one.
Check:
The 3x6 matrix
[[ 3 6 9 5 25 53 ] [A] = [ 7 14 21 9 53 105 ] [-4 -8 -12 5 -10 11 ]]will give you (with M=3, N=6, R=9) the result
[[ 1 2 3 0 5 6 ] [E] = [ 0 0 0 1 2 7 ] [ 0 0 0 0 0 0 ]]which is the
[[ 1 2 3 0 0 -37.75 ] [E] = [ 0 0 0 1 0 -10.5 ] [ 0 0 0 0 1 8.75 ]]Note that if this matrix was the augmented matrix of a system of 3 linear equations in 5 variables, the the correct solution will have 3 free parameters, the incorrect one only 2!