1   '********* MARKOV CHAIN ***********
2   '********* MKOV.BAS *********
3   CLS : PRINT : PRINT : PRINT
4   INPUT "         ENTER DIMENSION OF MATRIX "; N
5   DIM A(N, N), B(N), C(N, N), D(N)
10  CLS
20  FOR I = 1 TO N
30  FOR J = 1 TO N
35 'A(I, J) = 0
40  PRINT "   ENTER TRANSITION MATRIX |A| "
50  PRINT "   ROW  "; I; " "; "COLUMN  "; J;
60  INPUT A(I, J)
70  NEXT
80  NEXT
90  'GOSUB 500
100 'IF TEST <> 1 THEN RUN "C:\STUDENT\SAKORN\JOB\MKOV.BAS"'20
110 '*** ENTER DATA OF INITIAL STATE MATRIX *****
120  FOR I = 1 TO N
130  PRINT "   ENTET INITIAL STATE MATRIX |B| "
140  PRINT "   COLUMN  "; I;
150  INPUT B(I)
160  NEXT
170  '**** MULTIPLICATIONS ********
180  CNT = 1
190  PRINT "FIRST ITERATION "
200  FOR I = 1 TO N
210  C(I, 1) = 0
220  FOR J = 1 TO N
230  C(I, 1) = C(I, 1) + A(J, I) * B(J)
240  D(I) = C(I, 1)
250  NEXT
260  PRINT C(I, 1)
270  NEXT
280  '***** CHECK STEADY STATE MATRIX *****
290  FOR I = 1 TO N
300  IF ABS(B(I) - D(I)) < .00001 THEN FLAG = 1
310  IF ABS(B(I) - D(I)) > .00001 THEN FLAG = 0
320  NEXT
330  IF FLAG = 0 THEN GOTO 1000
340  IF FLAG = 1 THEN END
350  END
360 '******* SUBROUTINE TO TEST SUM OF PROBABILITY
500 '
510  FOR I = 1 TO N
520  FOR J = 1 TO N
530  TEST = TEST + A(I, J)
540  NEXT
550  IF TEST = 1 THEN 570
560  IF TEST <> 1 THEN 580
570  TEST = 0: NEXT
580  RETURN
590 '******** SUBROUTINE TO REPEAT MULTIPLY ****
1000 :
1010  FOR I = 1 TO N
1020  B(I) = D(I)
1030  NEXT
1040  CNT = CNT + 1
1050  PRINT "ITERATION  "; CNT
1060  GOTO 200
1070 '*************** EOF ******
    

