D. JacKaL's Matrices
One thing that the TI-80 doesn't have that would make life a bit easier is matrices. To remedy
this, I have made this program which will allow you to work with square matrices. It allows
you to be able to do anything with matrics that the TI-81 can except for determinants. It is
quite a useful program if you need to work with square matrices but only have a TI-80.
Before running the program, you must create a list in L6 with the numbers you want in your
matrix. These numbers will be read in the matrix from left to right, then from top to bottom.
If a square matrix cannot be formed by L6, you will get an error message telling you so. Also
note that the program uses L5 as well as L6, and L5 will be destroyed, so you may want to save
it in another list.
/START80/
/NAME=MATRIX
:CLRHOME
:\sqrt\(DIM L60->\@\
:IF \@\\<>\INT \@\
:THEN
:DISP "DIM L6 IS NOT A","PERFECT SQUARE,","SO MATRIX CANNOT","BE FORMED"
:GOTO Q
:END
:LBL 1
:CLRHOME
:DISP "MATRICES","1)PLACE ELEMENT","2)FIND VALUE","3)NEW SLOT VALUE","4)DISPLAY MATRIX","5)TRANSLATE","6)NEXT MENU"
:INPUT M
:CLRHOME
:IF M=1:GOTO E
:IF M=2:GOTO V
:IF M=3:GOTO N
:IF M=4:GOTO D
:IF M=5:GOTO T
:IF M=6:GOTO 2
:GOTO 1
:LBL 2
:CLRHOME
:DISP "MATRICES","1)ROWSWAP","2)ROW+","3)*ROW","4)*ROW+","5)PREVIOUS MENU","6)QUIT"
:INPUT M
:CLRHOME
:IF M=1:GOTO S
:IF M=2:GOTO A
:IF M=3:GOTO O
:IF M=4:GOTO W
:IF M=5:GOTO 1
:IF M=6:GOTO Q
:GOTO 2
:LBL N
:INPUT "ROW:",J
:IF J>\@\
:GOTO N
:INPUT "COLUMN:",L
:IF L>\@\
:GOTO N
:INPUT "NEW VALUE:",I
:I->L6(\@\9J-1)+L)
:GOTO 1
:LBL W
:INPUT "SCALAR:",J
:INPUT "ROW 1:",K
:IF K>\@\
:GOTO W
:INPUT "ROW 2:",L
:IF L>\@\
:GOTO W
:FOR(I,\@\9K-1)+1,K\@\
:JL6(I)+L6(I+\@\(L-K))->L6(I+\@\(L-K))
:END
:GOTO 2
:LBL O
:INPUT "SCALAR:",J
:INPUT "ROW:",L
:IF L>\@\
:GOTO O
:FOR(I,\@\(L-1)+1,L\@\
:JL6(I)->L6(I)
:END
:GOTO 2
:LBL T
:L6->L5
:FOR(I,1,\@\
:FOR(J,1,\@\
:L5(\@\(J-1)+I)->L6(\@\(I-1)+J)
:END
:END
:GOTO 1
:LBL V
:CLRHOME
:INPUT "ROW:",J
:IF J>\@\
:GOTO V
:INPUT "COLUMN:",L
:IF L>\@\
:GOTO V
:DISP "VALUE:',L6(\@\(J-1)+L)
:PAUSE
:GOTO 1
:LBL A
:CLRHOME
:INPUT "ADD ROW:",J
:IF J>\@\
:GOTO A
:INPUT "TO ROW:",L
:IF L>\@\
:GOTO A
:FOR(I,1,\@\
:L6(\@\(J-1)+I)+L6(\@\(L-1)+I)->L6(\@\(L-1)+I)
:END
:GOTO 2
:LBL S
:CLRHOME
:INPUT "SWAP ROW:",J
:IF J>\@\
:GOTO S
:INPUT "WITH ROW:",L
:IF L>\@\
:GOTO S
:L6->L5
:FOR(I,1,\@\
:L5(\@\(J-1)+I)->L6(\@\(L-1)+I)
:L5(\@\(L-1)+I)->L6(\@\(J-1)+I)
:END
:GOTO 2
:LBL E
:CLRHOME
:INPUT "ELEMENT:",L
:IF L>DIM L6
:GOTO E
:INT ((L-1)/\@\)+1->I
:DISP "ROW:",I,"COLUMN:",L-\@\(I-1)
:PAUSE
:GOTO 1
:LBL D
:\@\->DIM L5
:FOR(I,0,\@\-1
:FOR(J,1,\@\
:L6(\@\I+J)->L5(J)
:END
:DISP L5
:END
:PAUSE
:GOTO 1
:LBL Q
:CLRHOME
/STOP80/