BASIC PROGRAMS FOR SOME KEY ALGORITHMS
This Appendix contains computer programs in the BASIC language for some of the key algorithms mentioned in the main text, as follows:
| DIFFEU | Solving differential equations using the Euler method. |
| DIFFEQ | Solving differential equations using the midpoint rule. |
| DIFFER | Solving differential equations using the Runge-Kutta approximation. |
| PREDAT | Plotting the trajectory of predator-prey populations. |
| MARKl | Computing the Markov transition matrix. |
| MARK2 | Testing transition frequencies for the Markov property. |
| MARK3 | Test of the stationarity of a Markov chain. |
| MARK4 | Computing successive Markov probabilities. |
| AMARK | Calculating the properties of an absorbing Markov chain. |
| EMARK | Calculating the properties of an ergodic Markov chain. |
DIFFEU: SOLVING DIFFERENTIAL EQUATIONS USING THE
EULER METHOD
0010 REM * * SOLVE DIFFERENTIAL EQUATION USING EULER METHOD
0011 REM * * WRITTEN BY J.N.R. JEFFERS, INSTITUTE OF TERRESTRIAL ECOLOGY
0012 REM * * ORIGINAL PROGRAM FEBRUARY 1980
0013 REM
0014 REM * * PROGRAM COMPUTES THE VALUES FOR A DEFINED FUNCTION REPRESENTING
0015 REM * * A DIFFERENTIAL EQUATION IN x AND Y, FOR A GIVEN STEP SIZE BETWEEN
0016 REM * * A START AND END VALUE OF X, WITH A GIVEN STARTING VALUE OF Y
0017 REM
0018 REM * * DEFINE FUNCTION IN TERMS OF x AND Y
0019 REM
0020
DEF FNF(X, Y) =0.1 *Y
0024 REM
0025 REM * * INPUT START AND END TIMES, STARTING VALUE AND STEP SIZE
0026 REM
0030
DISP "START TIME";
0040
INPUT A
0050
DISP " END TIME";
0060
INPUT Z
0070
DISP "STARTING VALUE";
0080
INPUT Y
0090
DISP "TIME STEP" ;
0100
INPUT H
0104 REM
0105 REM * * PRINT INITIAL VALUES
0106 REM
0110
PRINT A,Y
0114 REM
0115 REM * * SUBROUTINE TO PRINT SUCCESSIVE VALUES
0116 REM
0120
FOR X=A TO Z-H STEP H
0130
LET D = FNF(X, Y)
0140
LET Y=Y+D*H
0150
PRINT X+H,Y
0160
NEXT X
0165 REM
0170 END
END OF LISTING
DIFFEQ: SOLVING DIFFERENTIAL EQUATIONS USING THE MIDPOINT RULE
0010 REM * * SOLVE DIFFERENTIAL EQUATION USING MIDPOINT RULE
0011 REM * * WRITTEN BY J.N.R. JEFFERS, INSTITUTE OF TERRESTRIAL ECOLOGY
0012 REM * * ORIGINAL PROGRAM WRITTEN JANUARY 1980, ANNOTATED JANUARY 1982 0013
REM
0014 REM * * PROGRAM COMPUTES THE VALUES OF A DEFINED FUNCTION REPRESENTING
0015
REM * * A DIFFERENTIAL EQUATION IN X AND Y, FOR A GIVEN STEP SIZE BETWEEN
0016
REM * * A START AND END VALUE OF X, WITH A GIVEN STARTING VALUE OF Y.
0017 REM * * THE MIDPOINT RULE IS USED IN CALCULATING VALUES
0018 REM
0019 REM * * DEFINE FUNCTION IN TERMS OF x AND Y
0020 REM
0021
DEF FNF(X,Y)=0.1*Y
0024 REM
0025 REM * * INPUT START AND END TIMES, STARTING VALUE AND STEP SIZE
0026 REM
0030
DISP "START TIME";
0040
INPUT A
0050
DISP " END TIME" ;
0060
INPUT Z
0070
DISP "STARTING VALUE";
0080
INPUT Y
0090
DISP "TIME STEP";
0100
INPUT H
0104 REM
0105 REM * * PRINT INITIAL VALUES
0106 REM
0110
PRINT A,Y
0114 REM
0115 REM * * SUBROUTINE TO PRINT SUCCESSIVE VALUES
0116 REM
0120
FOR X=A TO Z-H STEP H
0130
LET D1 =FNF(X,Y)
0140
LET D2=FNF(X+H/2,Y+D1*H/2)
0150
LET Y=Y+D2*H
0160
PRINT X+H,Y
0170
NEXT X
0175 REM
01BO END
END OF LISTING
DIFFER: SOLVING DIFFERENTIAL EQUATIONS USING THE RUNGE-KUTTA APPROXIMATION
0010 REM * * SOLVE DIFFERENTIAL EQUATION USING RUNGE-KUTTA
0011 REM * * WRITTEN BY J.N.R. JEFFERS, INSTITUTE OF TERRESTRIAL ECOLOGY
0012 REM * * ORIGINAL PROGRAM WRITTEN JANUARY 1980, ANNOTATED JANUARY 1982
0013
REM
0014 REM * * PROGRAM COMPUTES THE VALUES OF A DEFINED FUNCTION REPRESENTING
0015
REM * * A DIFFERENTIAL EQUATION IN X AND Y, FOR A GIVEN STEP SIZE BETWEEN
0016
REM * * A START AND END VALUE OF X, WITH A GIVEN STARTING VALUE OF Y.
0017 REM * * THE RUNGE-KUTTA SOLUTION IS USED IN CALCULATING VALUES
0018 REM
0019 REM * * DEFINE FUNCTION IN TERMS OF X AND Y
0020 REM
0021
DEF FNF(X,Y)=0.1*Y
0024 REM
0025 REM * * INPUT START AND END TIMES, STARTING VALUE AND STEP SIZE
0026 REM
0030
DISP "START TIME";
0040
INPUT A
0050
DISP " END TIME" ;
0060
INPUT Z
0070
DISP "STARTING VALUE";
0080
INPUT Y
0090
DISP "TIME STEP" ;
0100
INPUT H
0104 REM
0105 REM * * PRINT INITIAL VALUES
0106 REM
0110
PRINT A,Y
0114 REM
0115 REM * * RUNGE-KUTTA SUBROUTINE TO PRINT SUCCESSIVE VALUES
0116 REM
0120
FOR X=A TO Z-H STEP H
0130
LET T4=A+X*H
0140
LET T3=T4-H/2
0150
LET T2=T4-H
0160
LET K1 =FNF(T2,Y)
0170
LET Z3=Y+K1*H/2
0180
LET K2=FNF(T3,Z3)
0190
LET Z3=Y+K2*H/2
0200
LET K3 = FNF(T3,Z3)
0210
LET Z3=Y+K3*H
0220
LET K4=FNF(T4,Z3)
0230
LET Y=Y+(K1 +2*K2+2*K3+K4)*H/6
0240
PRINT X + H, Y
0250
NEXT X
0255 REM
0260 END
END OF LISTING
PREDAT: PLOTTING THE TRAJECTORY OF PREDATOR-PREY POPULATIONS
0010 REM PROGRAM TO PLOT TRAJECTORY OF PREDATOR-PREY POPULATIONS
0020 DEF FNX(X)=4*X-0.25*X*X-2*X*Y
0030 DEF FNY(Y)=X*Y-3*Y
0040 ERASE
0050 INIMAGE DIS,2
0060 FRAME 8,5.6
0070 DISP "LIMITS OF X-AXIS" ;
0080 INPUT X8,X9
0090 DISP "LIMITS OF Y-AXIS" ;
0100 INPUT Y8, Y9
0110 SCALE X8,X9,Y8,Y9
0120 XAXIS 0,1
0130YAXIS 0,1
0140 DISP "TIME INTERVAL";
0150 INPUT T8
0160 DISP "TOTAL TIME" ;
01701NPUT T9
0180 DISP "NO OF PLOTTED POINTS";
0190 INPUT P
0200 DISP " STARTING VALUES-X, Y" ;
0210 INPUT X,Y
0220 IF X<0 THEN 330
0230 IF Y<0 THEN 330
0240 MOVE X, Y
0250 FOR I = 1 TO P STEP 1
0260 FOR T = 0 TO T9/P STEP T8
0270 LET X=X+FNX(X)*T8
0280 LET Y=Y+FNY(Y)*T8
0290 NEXT T
0300 PLOT X, Y
0310 NEXT I
0320 GOTO 200
0330 END
END OF LISTING
MARK1: COMPUTING THE MARKOV TRANSITION MATRIX
0010 REM * * PROGRAM TO COMPUTE MARKOV TRANSITION MATRIX
0020 REM * * FROM A SEQUENCE OF N INTEGERS
0021 REM * * WRITTEN BY J.N.R. JEFFERS, INSTITUTE OF TERRESTRIAL ECOLOGY
0022 REM * * PROGRAM WRITTEN AND ANNOTATED JANUARY 1982
0023 REM
0024 REM * * PROGRAM COMPUTES THE FREQUENCIES OF THE TRANSITIONS FROM ONE
0025 REM * * STATE TO ANOTHER FROM A SEQUENCE OF INTEGERS REPRESENTING THE
0026 REM * * SUCCESSIVE STATES. FREQUENCIES AND TRANSITION PROBABILITIES
0027 REM * * ARE PRINTED FOR SUBSEQUENT ANALYSIS.
0028 REM
0029 REM * * DIMENSION STATEMENT DEPENDS ONLY ON NUMBER OF STATES
0030 REM
0031
DIM P(20,20)
0034 REM
0035 REM * * INPUT NO OF STATES AND NO OF INTEGERS
0036 REM
0040
DISP "NO OF STATES";
0050
INPUT M
0060
DISP "NO OF DATA VALUES";
0070
INPUT N
0074 REM
0075 REM * * CLEAR WORKING MATRIX
0076 REM
0080
FOR I = 1 TO M STEP 1
0090
FOR J = 1 TO M STEP 1
0100
LET P(I,J)=0
0110
NEXT J
0120
NEXT I
0124 REM
0125 REM * * INPUT SUCCESSIVE INTEGERS AND COMPUTE FREQUENCIES
0126 REM
0130
INPUT I
0140
FOR K=2 TO N STEP 1
0150
INPUT J
0160
IF J<1 THEN 150
0170
IF J>M THEN 150
0180
LET P(I,J) = P(I,J) + 1
0190
LET I=J
0200
NEXT K
0204 REM
0205 REM * * PRINT OBSERVED FREQUENCIES AND COMPUTE PROBABILITIES
0206 REM
0210
PRINT "OBSERVED FREQUENCIES"
0220
PRINT
0230
PRINT
0240
PRINT
0245 REM
0250
FOR I=1 TO M STEP 1
0260
LET S=O
0270
FOR J= 1 TO M STEP 1
0280
LET S=S+P(I,J)
0290
PRINT P(I,J),
0300
NEXT J
0310
FOR J=1 TO M STEP 1
0320
LET P(I,J) = P(I,J)/S
0330
NEXT J
0340
PRINT
0350
NEXT I
0354 REM
0355 REM * * PRINT TRANSITION PROBABILITIES
0356 REM
0360
PRINT
0370
PRINT
0380
PRINT
0390
PRINT "TRANSITION PROBABILITIES"
0400
PRINT
0410
PRINT
0420
PRINT
0425 REM
0430
FOR I = 1 TO M STEP 1
0440
FOR J= 1 TO M STEP 1
0450
PRINT P(I,J),
0460
NEXT J
0470
PRINT
0480
NEXT I
0485 REM
0490 END
END OF LISTING
MARK2: TESTING TRANSITION FREQUENCIES FOR THE MARKOV PROPERTY
0005 REM * * PROGRAM TO TEST TRANSITION FREQUENCIES FOR THE
MARKOV PROPERTY
0006 REM * * WRITTEN BY J.N.R. JEFFERS, INSTITUTE OF TERRESTRIAL
ECOLOGY
0007 REM * * WRITTEN AND ANNOTATED JANUARY 1982
0008 REM
0009 REM * * THE PROGRAM READS A MATRIX OF TRANSITION FREQUENCIES HELD AS
0010
REM * * DATA AND COMPUTES A CHI-SQUARE TEST THAT THE TRANSITIONS ARE
0011 REM * *
FROM AN INDEPENDENT EVENTS PROCESS. REJECTION OF THE NULL
0012 REM * * HYPOTHESIS INDICATES THE ALTERNATIVE HYPOTHESIS THAT THE
0013 REM * * TRANSITIONS HAVE THE MARKOV PROPERTY.
0014 REM
0018 REM * * DIMENSION STATEMENT DEPENDS ON NO OF STATES
0019 REM
0020
DIM T(6,6),P(6,6),C(6)
0024 REM
0025 REM * * INPUT NO OF STATES
0026 REM
0030
DISP "NO OF STATES";
0040
INPUT M
0044 REM
0045 REM * * READ FREQUENCIES FROM DATA STATEMENTS AND ZERO ROW ACCUMULATORS
0046 REM
0050
FOR I = 1 TO M STEP 1
0060
FOR J = 1 TO M STEP 1
0070
READ T (I, J)
0080
NEXT J
0090
LET C (I)=0
0100
NEXT I
0104 REM
0105 REM * * COMPUTE TRANSITION PROBABILITIES AND ROW TOTALS
0106 REM
0110
LET Z=0
0120
FOR 1=1 TO M STEP 1
0130
LET S=0
0140
FOR J=1TOMSTEP1
0150
LET S=S + T(I,J)
0160
LET Z=Z + T(I,J)
0170
NEXT J
0175 REM
0180
FOR J=1 TO M STEP 1
0190
LET P(I,J) = T(I,J)/S
0200
NEXT J
0210
NEXT I
0214 REM
0215 REM * * COMPUTE COLUMN TOTALS
0216 REM
0220
FOR J = 1 TO M STEP 1
0230
FOR I = 1 TO M STEP 1
0240
LET C(J) = C(J) + T(I,J)
0250
NEXT J
0260
LET C(J) = C(J)/Z
0270
NEXT J
0274 REM
0275 REM * * COMPUTE AND PRINT CHI-SQUARE AND DF
0276 REM
0280
LET L = 0
0290
FOR I = 1 TO M STEP 1
0300
FOR J = 1 TO M STEP 1
0310
LET L=L + T(I,J) * LOG(P(I,J)/C(J))
0320
NEXT J
0330
NEXT I
0335 REM
0340
LET L=L*2
0350
PRINT
0360
PRINT
0370
PRINT
0380
PRINT "CHI-SQUARE= ";L;" WITH "; (M=1)1\2;"
DF"
0384 REM
0385 REM * * DATA STATEMENTS OF TRANSITION FREQUENCIES
0386 REM
0391
DATA58,1B,2
0392
DATA 15,86,39
0393
DATA 5,35,51
0415 REM
0420 END
END OF LISTING
MARK3: TESTING THE STATIONARITY OF A MARKOV CHAIN
0005 REM * * TEST OF STATIONARITY OF MARKOV CHAIN
0006 REM * * WRITTEN BY J.N.R.JEFFERS, INSTITUTE OF TERRESTRIAL ECOLOGY
0007 REM * * WRITTEN AUGUST 1982
0008 REM
0009 REM * * THE PROGRAM TESTS THE STATIONARITY OF A SERIES OF MARKOV
0010 REM * * TRANSITION SUB-MATRICES IN EITHER TIME OR SPACE. THE TEST
0011 REM * * IS DISTRIBUTED LIKE CHI-SQUARE, AND TEST VALUES GREATER THAN
0012 REM * * THOSE TABULATED FOR THE GIVEN DEGREES OF FREEDOM INDICATE
0013 REM * * NON-STATIONARITY.
0017 REM
0018 REM * * DIMENSION STATEMENT DEPENDS ON NUMBER OF STATES
0019 REM
0020
DIM N(6,6),P(6,6),O(6,6)
0024 REM
0025 REM * * INPUT NO OF STATES AND SUB-MATRICES
0026 REM
0030
DISP "NO OF STATES";
0040
INPUT M
0050
DISP "NO OF SUBMATRICES";
0060
INPUT T
0064 REM
0065 REM * * READ AND SUM SUB-MATRICES
0066 REM
0070
MAT Q = ZER(M,M)
0080
FOR I = 1 TO T STEP 1
0090
MAT READ N(M,M)
0100
MAT Q = Q + N
0110
NEXT I
0114 REM
0115 REM * * COMPUTE AND PRINT TRANSITION MATRIX
0116 REM
0120
FOR I = 1 TO M STEP 1
0130
LET R = 0
0140
FOR J = 1 TO M STEP 1
0150
LET R=R+Q(I,J)
0160
NEXT J
0165 REM
0170
FOR J = 1 TO M STEP 1
0180
LET Q(I,J)=Q(I,J)/R
0190
NEXT J
0200
NEXT I
0205 REM
0210
PRINT "MATRIX OF TRANSITION PROBABILITIES"
0220
PRINT
0230
PRINT
0240
MAT PRINT Q
0250
PRINT
0260
PRINT
0264 REM
0265 REM * * COMPUTE AND PRINT TEST STATISTIC
0266 REM
0270
RESTORE
0275 REM
0280
FOR K= 1 TO T STEP 1
0290
LET S = 0
0300
MAT READ N(M,M)
0310
FOR I=1 TO M STEP 1
0315 REM
0320
LET R = 0
0330
FOR J = 1 TO M STEP 1
0340
LET R = R + N(I,J)
0350
NEXT J
0355 REM
0360
FOR J = 1 TO M STEP 1
0370
LET P(I,J) = N(I,J)/R
0380
NEXT J
0385 REM
0390
FOR J= 1 TO M STEP 1
0400
LET S = S + N(I,J) * LOG(P(I,J)/Q(I,J)
0410
NEXT J
0415 REM
0420
NEXT I
0425 REM
0430
NEXT K
0435 REM
0440
LET C =2 * S
0450
LET D = (T -1) * M * (M-1)
0460
PRINT" CHI-SQUARE = " ;C
0470
PRINT "WITH
";D;"DEGREES OF FREEDOM"
0480
PRINT
0490
PRINT
0500
PRINT "IF THIS CALCULATED VALUE EXCEEDS THE TABULATED VALUE"
0510
PRINT "OF CHI-SQUARE FOR THE GIVEN NO OF DEGREES OF
FREEDOM"
0520
PRINT "THE HYPOTHESIS OF STATIONARITY SHOULD BE REJECTED"
0525 REM
0530 REM * * SUCCESSIVE SUBMATRICES OF FREQUENCIES SHOULD BE"
0540 REM ** GIVEN IN THE DATA STATEMENTS WHICH FOLLOW
0545 REM
0601
DATA
0602
DATA
0603
DATA
0604
DATA
0895 REM
0900 END
END OF LISTING
MARK4: COMPUTING SUCCESSIVE MARKOV PROBABILITIES
0005 REM * * PROGRAM TO COMPUTE MARKOV PROBABILITIES AFTER N STEPS
0006 REM * * WRITTEN BY J.N.R. JEFFERS, INSTITUTE OF TERRESTRIAL ECOLOGY
0007 REM * * WRITTEN MAY 1979, ANNOTATED JANUARY 1982
0008 REM
0009 REM * * PROGRAM CALCULATES THE TRANSITION PROBABILITIES OF A MARKOV
0010 REM * * PROCESS AFTER N SUCCESSIVE TIME STEPS, PRINTING THE ORIGINAL
0011 REM * * MATRIX OF TRANSITION PROBABILITIES AND THE PROBABILITIES AFTER
0012 REM * * N TIME STEPS HAVE TAKEN PLACE. THE INTERMEDIATE PROBABILITIES
0013 REM * * ARE NOT PRINTED, IN CONTRAST TO MARK3.
0017 REM
0018 REM ** DIMENSION STATEMENT DEPENDS ON NUMBER OF STATES
0019 REM
0020
DIM T(6,6),P(6,6),R(6,6)
0024 REM
0025 REM * * INPUT NO OF STATES AND NO OF TIME STEPS
0026 REM
0030
DISP "NO OF STATES";
0040
INPUT M
0050
DISP "NO OF STEPS";
0060
INPUT N
0064 REM
0065 REM * * READ ORIGINAL TRANSITION MATRIX AS DATA AND PRINT
0066 REM
0070
PRINT "ORIGINAL MATRIX"
0080
PRINT
0085 REM
0090
FOR I = 1 TO M STEP 1
0100
FOR J = 1 TO M STEP 1
0110
READ T(I,J)
0120
LET P(I,J) = T(I,J)
0130
PRINT T(I,J),
0140
NEXT J
0150
PRINT
0160
NEXT I
0164 REM
0165 REM * * CALCULATE SUCCESSIVE PROBABILITIES
0166 REM
0170
FOR L = 1 TO N STEP1
0175 REM
0180
FOR I=1TOMSTEP1
0190
FOR J = 1 TO M STEP 1
0200
LET R(I,J)=0
0210
FOR K = 1 TO M STEP 1
0220
LET R(I,J) = R(I,J) + T(I,K) * P(K,J)
0230
NEXT K
0240
NEXT J
0250
NEXT I
0255 REM
0260
FOR I = 1 TO M STEP 1
0270
FOR J = 1 TO M STEP 1
0280
LET P(I,J) = R(I,J)
0290
NEXT J
0300
NEXT I
0305 REM
0310
NEXT L
0314 REM
0315 REM * * PRINT FINAL TRANSITION PROBABILITIES
0316 REM
0320
PRINT
0330
PRINT
0340
PRINT "STEP";L-1
0345 REM
0350
FOR I = 1 TO M STEP 1
0360
FOR J = 1 TO M STEP 1
0370
PRINT P(I,J),
0380
NEXT J
0390
PRINT
0400
NEXT I
0404 REM
0405 REM ** DATA STATEMENTS
0406 REM
0411
DATA 0.77,0.18,0.05
0412
DATA 0.08,0.65,0.27
0413
DATA 0.07,0.32,0.61
0495 REM
0500 END
END OF LISTING
AMARK: CALCULATING THE PROPERTIES OF AN ABSORBING MARKOV CHAIN
0005 REM * * PROGRAM TO COMPUTE PROPERTIES OF AN ABSORBING
MARKOV CHAIN
0006 REM * * WRITTEN BY J.N.R.JEFFERS, INSTITUTE OF TERRESTRIAL ECOLOGY
0007 REM * * WRITTEN OCTOBER 1978 FROM AN ALGORITHM BY J.G.KEMENY
0008 REM * * ANNOTATED JANUARY 1982
0009 REM
0010 REM * * PROGRAM CALCULATES THE BASIC PROPERTIES OF A MARKOV TRANSITION
0011
REM * * MATRIX WITH ONE OR MORE ABSORBING STATES. IN ADDITION TO THE
0012 REM * *
FUNDAMENTAL MATRIX, THE PROBABILITIES TO ABSORPTION FROM
0013 REM * * EACH STATE ARE CALCULATED AND PRINTED
0014 REM
0018 REM * * DIMENSIONS DEPEND ON NUMBER OF STATES
0019 REM
0020
DIM Q(10, 10),N(10, 10),R(10, 10)
0030
DIM T(10),U(10)
0034 REM
0035 REM * * READ NO OF ABSORBING AND NO OF TRANSIENT STATES
0036 REM
0040
READ M,N
0044 REM
0045 REM * * READ MATRIX OF TRANSIENT PROBABILITIES
0046 REM
0050
MAT READ Q(N,N)
0054 REM
0055 REM * * READ MATRIX OF TRANSIENT TO ABSORBING PROBABILITIES
0056 REM
0060
MAT READ R(N,M)
0064 REM
0065 REM * * PREPARE IDENTITY MATRIX AND VECTOR
0066 REM
0070
MAT N = IDN(N,N)
0080
MAT U=CON(N,1)
0084 REM
0085 REM * * PRINT TRANSIENT TO TRANSIENT PROBABILITIES
0086 REM
0090
PRINT "TRANSIENT TO TRANSIENT PROBABILITIES"
0100
MAT PRINT Q
0110
PRINT
0114 REM
0115 REM * * PRINT TRANSIENT TO ABSORBING PROBABILITIES
0116 REM
0120
PRINT" TRANSIENT TO ABSORBING PROBABILITIES"
0130
MAT PRINT R
0140
PRINT
0144 REM
0145 REM ** COMPUTE AND PRINT FUNDAMENTAL MATRIX
0146 REM
0150
MAT Q=N-Q
0160
MAT N=INV(Q)
0170
PRINT "FUNDAMENTAL MATRIX"
0180
MAT PRINT N
0190
PRINT
0200
MAT T=N*U
0210
MAT PRINT T
0220
PRINT
0224 REM
0225 REM * * COMPUTE AND PRINT ABSORPTION PROBABILITIES
0226 REM
0230
MAT Q=N*R
0240
PRINT "ABSORPTION PROBABILITIES"
0250
MAT PRINT Q
0694 REM
0695 REM ** DATA HELD AS DATA STATEMENTS
0705 REM
0795 REM * * MATRIX OF TRANSIENT PROBABILITIES
0796 REM
0801
DATA 0.936, 0.064, 0.000, 0000
0802
DATA 0.000, 0.921, 0.079, 0.000
0803
DATA 0.000, 0.000, 0.951,0.049
0804
DATA 0.000, 0.000, 0.000, 0.961
0844 REM
0845 REM * * MATRIX OF ABSORBING PROBABILITIES
0846 REM
0850
DATA 0.000, 0.000.0.000, 0.039
0895 REM
0900 END
END OF LISTING
0005 REM * * PROGRAM TO CALCULATE THE PROPERTIES OF AN ERGODIC MARKOV CHAIN
0006 REM * * WRITTEN BY J.N.R. JEFFERS, INSTITUTE OF TERRESTRIAL ECOLOGY
0007 REM * * WRITTEN AUGUST 1980 FROM AN ALGORITHM BY J.G. KEMENY
0008 REM * * ANNOTATED FEBRUARY 1982
0009 REM
0010 REM * * PROGRAM CALCULATES THE BASIC PROPERTIES OF AN ERGODIC MARKOV
0011 REM * * CHAIN. IN ADDITION TO THE LIMITING PROBABILITIES FOR EACH STATE
0012 REM * * THE PROGRAM CALCULATES THE MEAN FIRST PASSAGE TIMES AND THE
0013 REM * * FIRST PASSAGE TIMES IN EQUILIBRIUM.
0014 REM
0018 REM
0019 REM
0020
DIM P(10,10),M(10, 10),Z(10, 10)
0030
DIMA(10,10),B(10,10)
0034 REM
0035 REM * * READ NO OF STATES AND MATRIX OF TRANSITION PROBABILITIES
0036 REM
0040
READ N
0050
MAT READ P(N,N)
0054 REM
0055 REM * * CONSTRUCT IDENTITY MATRIX
0056 REM
0060
MAT Z=IDN(N,N)
0064 REM
0065 REM * * PRINT MATRIX OF TRANSITION PROBABILITIES
0066 REM
0070
PRINT "TRANSITION PROBABILITIES"
0080
PRINT
0090
MAT PRINT P
0100
PRINT
0110
PRINT
0120
PRINT
0124 REM
0125 REM * * COMPUTE AND PRINT LIMITING PROBABILITIES
0126 REM
0130
MAT Z=Z-P
0135 REM
0140
FOR I=1 TO N STEP 1
0150
LET Z(I,N)=1
0160
NEXT I
0165 REM
0170
MAT M=INV(Z)
0180
MAT A=ZER(1,N)
0185 REM
0190
FOR J = 1 TO N STEP 1
0200
LET A(1,J)=M(N,J)
0210
NEXT J
0215 REM
0220
PRINT "LIMITING PROBABILITIES"
0230
PRINT
0240
MAT PRINT A
0250
PRINT
0260
PRINT
0270
PRINT
0274 REM
0275 REM * * COMPUTE AND PRINT MEAN FIRST PASSAGE TIMES
0276 REM
0280
MAT M=IDN(N,N)
0290
MAT M=M-P
0295 REM
0300
FOR I = 1 TO N STEP 1
0310
FOR J=1 TO N STEP 1
0320
LET M(I,J)=M(I,J)+A(1,J)
0330
NEXT J
0340
NEXT I
0345 REM
0350
MAT Z=INV(M)
0355 REM
0360
FOR I = 1 TO N STEP 1
0370
FOR J = 1 TO N STEP 1
0380
LET M(I,J) = (Z(J,J) -Z(I,J))/A(1 ,J)
0390
NEXT J
0400
NEXT I
0405 REM
0410
PRINT "MEAN FIRST PASSAGE TIMES"0420 PRINT
0430
MAT PRINT M
0440
PRINT
0450
PRINT
0460
PRINT
0464 REM
0465 REM * * COMPUTE AND PRINT FIRST PASSAGE TIMES IN EQUILIBRIUM
0466 REM
0470
MAT B=A*M
0475 REM
0480
PRINT "FIRST PASSAGE TIMES IN EQUILIBRIUM"
0485
PRINT
0490
MAT PRINT B
0494 REM
0495 REM * * DATA HELD AS DATA STATEMENTS
0496 REM
0497 REM * * NUMBER OF STATES
0498 REM
0500
DATA 4
0504 REM
0505 REM * * MATRIX OF TRANSITION PROBABILITIES
0506 REM
0510
DATA 0.38, 0.18, 0.00, 0.44
0520
DATA 0.45, 0.32, 0.21, 0.02
0530
DATA 0.31, 0.04, 0.17,0.48
0540
DATA 0.40, 0.16, 0.22, 0.21
0595 REM
0600 END
END OF LISTING
|
|
|
The electronic version of this publication has been
prepared at |