Listing of file='DETERM.BAS;01' on disk='vmedia/ncc_18-sector.ccvf'
100 REM --------------------------------------------------- 120 REM DETERMINANT OF A MATRIX 140 REM CREATED 20/05/81 160 REM FROM BYTE MARCH 1981( B.J. FLYNN ) 170 REM UPPER TRIANGULAR MATHOD 175 REM LAST REVISED 21/05/81 180 REM -------------------------------------------------- 190 CLEAR 1000 200 REM MOD 1 INIT. & ENTER DATA 220 GOSUB 1000 240 REM MOD 2 CALC. DETERMINANT 260 GOSUB 2000 280 REM MOD 3 PRINT DETERMINANT 300 GOSUB 3000 320 PLOT 3,0,30:INPUT "AGAIN ? > ";A$ 340 IF A$< > "N" GOTO 100 360 END 380 REM --------------------------------------- 600 REM GENERATE RANDOM MATRIX 610 PLOT 12:PRINT :INPUT "RANDOM MATRIX ? > ";A$ 620 IF A$= "N" THEN G$= "A":RETURN 630 PRINT :KK= K 640 FOR I= 1 TO KK 650 FOR J= 1 TO KK 660 X(I,J)= INT (9* RND (J)) 665 Z(I,J)= X(I,J) 670 NEXT J,I 690 G$= "X" 700 RETURN 710 REM 1000 REM ----------- MODULE 1 ------------------ 1002 SIGN= 1:DT= 1 1010 PLOT 12:PRINT "THIS PROGRAM COMPUTE THE DETERMINANT OF A MATRIX":PRINT 1020 PRINT :INPUT "MATRIX DIMENSION > ";K 1030 DIM X(K,K),Z(K,K) 1040 REM 1045 GOSUB 600 1048 IF G$= "X" THEN RETURN 1050 FOR I= 1 TO K 1060 PRINT :PRINT "ENTER";TAB( 10);"ROW # ";I;":" 1070 FOR J= 1 TO K 1080 PRINT :PRINT "COL # ";J;:INPUT " ";X(I,J) 1090 NEXT J,I 1100 FOR I= 1 TO K: FOR J= 1 TO K:Z(I,J)= X(I,J):NEXT J,I 1110 RETURN 2000 REM ----------- MODULE 2 ------------------ 2002 Z= 0:POKE 33209,Z:POKE 33210,Z:POKE 33211,Z 2005 PLOT 12:PLOT 3,15,15:PRINT "*** CALCULATING ***" 2010 IF K= 1 THEN DT= X(1,1):RETURN 2020 REM FILL LOWER TRIANGLE WITH 0 S 2030 FOR L= 1 TO K- 1 2040 FOR I= L TO K- 1 2050 REM AVOID DIVIDE BY 0 2060 IF X(L,L)= 0 THEN GOSUB 4000 2070 IF DT= 0 GOTO 2180 2080 C= X(I+ 1,L)/ X(L,L) 2090 FOR J= 1TO K 2100 X(I+ 1,J)= X(I+ 1,J)- X(L,J)* C 2110 NEXT J,I,L 2120 REM ADD UP PRODUCT OF DIAGONAL 2130 FOR I= 1 TO K 2140 DT= DT* X(I,I) 2150 NEXT I 2160 DT= DT* SIGN 2170 REM 2172 DD= PEEK (33209):MM= PEEK (33210):YY= PEEK (33211) 2174 IF DD< 60 GOTO 2176 2175 MM= MM+ 1:DD= DD- 60 2176 IF MM< 60 GOTO 2178 2177 YY= YY+ 1:MM= MM- 60 2178 PRINT :PRINT 2180 RETURN 3000 REM ----------- MODULE 3 ------------------ 3002 PLOT 12:PRINT "ORIGINAL MATRIX":PRINT :FOR I= 1 TO K 3003 FOR J= 1 TO K 3004 PRINT TAB( 5);Z(I,J);TAB( 5+ J* 5);:NEXT J:PRINT :NEXT I 3005 PRINT :PRINT :PRINT :PRINT "FINAL MATRIX":PRINT :FOR I= 1 TO K 3006 FOR J= 1 TO K 3007 PRINT TAB( 5);X(I,J);TAB( 5+ 5* J);:NEXT J:PRINT :NEXT I 3008 PRINT :PRINT :PRINT "TOTAL TIME = ";INT (YY);INT (MM);INT (DD):PRINT :PRINT 3010 PRINT :PRINT "DETERMINANT = ";DT:PLOT 6,2 3020 RETURN 4000 REM ------- SUB SWITCH ROWS --------- 4010 FOR M= L+ 1 TO K 4020 IF X(M,L)= 0 GOTO 4070 4030 FOR Q= 1 TO K 4040 HOLD= X(L,Q):X(L,Q)= X(M,Q):X(M,Q)= HOLD 4050 NEXT Q 4060 SIGN= - SIGN:GOTO 4100 4070 NEXT M 4080 REM DET = 0 4090 DT= 0 4100 RETURN 4110 REM ------- END ----------