1 ' Gauss
2 ' by Stuart McColl 3 ' Amstrad Action April 88 10 MODE 2:INK 1,0:INK 0,13:BORDER 10 20 PRINT "GAUSS JORDAN ELIMINATION.":PRINT 30 PRINT "A unique and simple method of solving any number "; 40 PRINT "of simultaneous equations," 50 PRINT "consisting of any number of variables.":PRINT 60 ' 70 ' Initialise variables and get positional 80 ' coefficients of each. 90 ' 100 INPUT "Number of equations:",equnum 110 INPUT "Number of variables:",varnum 120 DIM a(equnum,varnum+1) 130 FOR loop = 1 TO varnum 140 LOCATE (7+loop*6),9 150 a$="x"+MID$(STR$(loop),2):PRINT a$; 160 NEXT 170 PRINT" Answer" 180 FOR loop = 1 TO equnum 190 PRINT "Equation";loop;":"; 200 FOR inner = 1 TO varnum + 1 210 INPUT ;"",a(loop,inner):PRINT TAB (13+6*inner) 220 IF inner = varnum THEN PRINT"= "; 230 NEXT inner 240 LOCATE 1,loop+10 250 NEXT loop 260 ' 270 ' Reduce each row of the augmented matrix to 280 ' row echelon form. 290 ' 300 IF varnum > equnum THEN maximum = equnum ELSE maximum = varnum 310 FOR row = 1 TO maximum 320 col = row 330 temp = a(row,col) 340 IF temp = 0 THEN 440 350 FOR loop = 1 TO varnum + 1 360 a(row,loop) = a(row,loop) / temp 370 NEXT 380 FOR loop = 1 TO equnum 390 IF loop = row THEN 430 400 FOR inner = varnum + 1 TO 1 STEP -1 410 a(loop,inner) = a(loop,inner) + (-(a(loop,col)) * a(row,inner)) 420 NEXT inner 430 NEXT loop 440 NEXT row 450 ' 460 ' Display the reduced equations in the same 470 ' format as they were entered. 480 ' 490 PRINT 500 FOR loop = 1 TO equnum 510 FOR inner = 1 TO varnum + 1 520 PRINT TAB (6 + 6 * inner); 530 IF inner = varnum + 1 THEN PRINT" = "; 540 PRINT ROUND (a(loop,inner),2); 550 NEXT inner 560 PRINT 570 NEXT loop 580 PRINT:PRINT"Again ?" 590 a$=UPPER$(INKEY$) 600 IF a$="Y" THEN RUN ELSE IF a$<>"N" THEN 590 |