home *** CD-ROM | disk | FTP | other *** search
/ Antennas / Antennas_CD-ROM_Walnut_Creek_September_1996.iso / mathaids / misc / rungaint.asc < prev    next >
Text File  |  1996-06-30  |  3KB  |  96 lines

  1. 10 REM*********************************
  2. 11 REM*                             ***
  3. 12 REM* LINEAR MODEL SIMULATION PGM ***
  4. 13 REM*                             ***
  5. 14 REM*   RUNGA-KUTTA INTEGRATION   ***
  6. 15 REM*                             ***
  7. 16 REM* DISK NAME IS 'RUNGA'        ***
  8. 17 REM* BY K.VANSLETTE       REV.A  ***
  9. 18 REM*                             ***
  10. 19 REM*********************************
  11. 20 REM
  12. 25 
  13. 30 PRINT "   - RUNGA-KUTTA INTEGRATION PROGRAM -"
  14. 35 PRINT "THE PARAMETERS ARE -"
  15. 40 PRINT " 1) NUMBER OF MODEL COMPARTMENTS"
  16. 45 PRINT " 2) NUMBER OF ENVIROMENTAL INPUTS"
  17. 50 PRINT " 3) MATRIX OF COMPARTMENTAL RATE COEF"
  18. 55 PRINT " 4) VECTOR OF INITIAL COMPARTMENT SIZES"
  19. 60 PRINT " 5) MATRIX OF ENVIROMENTAL INPUT COEF"
  20. 65 PRINT " 6) VECTOR OF ENVIROMENTAL INPUT SIZES"
  21. 70 PRINT " 7) NUMBER OF ITERATIVE STEPS"
  22. 75 INPUT "ENTER NUMBER OF COMPARTMENTS  (1-7)";N
  23. 80 N=N-1
  24. 85 INPUT "ENTER NUMBER OF MODEL INPUTS  (1-3)";NN
  25. 90 NN=NN-1:GOTO 100
  26. 95 PRINT"                             ":RETURN
  27. 100 DIM A(N,N),B(N,NN),XX(100,N),X(N)
  28. 105 DIM AX(N),XD(N),XP(N),XQ(N),XR(N)
  29. 110 DIM Z(NN),BB(N),S(N),P(N)
  30. 115 PRINT "ENTER MATRIX OF COMPARTMENT RATE COEF-"
  31. 120 FOR I=0 TO N
  32. 125 FOR J=0 TO N:PRINT "ROW";J;"  COL";I:INPUT"                COEF";A(I,J)
  33. 130 NEXT J:NEXT I:GOSUB 95
  34. 135 PRINT "ENTER INITIAL COMPARTMENT VALUES -   "
  35. 140 FOR I=0 TO N:PRINT "PART";I:INPUT"         VALUE";XX(0,I):NEXT I:GOSUB 95
  36. 145 PRINT "ENTER MATRIX OF INPUT COEFFICIENTS -  "
  37. 150 FOR I=0 TO N
  38. 155 FOR J=0 TO NN:PRINT "ROW";J;"  COL";I:INPUT"                COEF";B(I,J)
  39. 160 NEXT J:NEXT I:GOSUB 95
  40. 165 PRINT "ENTER THE SIZES OF THE INPUTS -      "
  41. 170 FOR I=0 TO NN:PRINT "PART";I:INPUT"         VALUE";Z(I):NEXT I:GOSUB 95
  42. 175 INPUT "ENTER NUMBER OF ITERATIONS    (1-3)";KK
  43. 180 FOR I=0 TO N: REM SAVE INIT VALUES
  44. 185 X(I)=XX(0,I):NEXT I
  45. 190 PRINT "START INTEGRATION..."
  46. 195 REM
  47. 200 REM *** START SIMULATION ***
  48. 205 FOR IJ=1 TO 100
  49. 208 PRINT "--TIME UNITS=";IJ" --"
  50. 210 DT=1/KK
  51. 212 PRINT "DT  =";DT
  52. 215 FOR JJ=1 TO KK
  53. 218 PRINT "ITERATION";JJ
  54. 220 FOR I=0 TO N
  55. 222 PRINT "FIRST=";I
  56. 225 XD(I)=0
  57. 230 FOR J=0 TO N:XD(I)=XD(I)+A(I,J)*X(J):NEXT J
  58. 235 FOR K=0 TO NN:XD(I)=XD(I)+B(I,K)*Z(K):NEXT K
  59. 240 NEXT I
  60. 242 PRINT "FIRST EST."
  61. 245 FOR I=0 TO N:AX(I)=X(I)+(DT/2)*XD(I):NEXT I
  62. 250 FOR I=0 TO N
  63. 255 XP(I)=0
  64. 260 FOR J=0 TO N:XP(I)=XP(I)+A(I,J)*AX(J):NEXT J
  65. 265 FOR K=0 TO NN:XP(I)=XP(I)+B(I,K)*Z(K):NEXT K
  66. 270 NEXT I
  67. 272 PRINT "SECOND EST."
  68. 275 FOR I=0 TO N:AX(I)=X(I)+(DT/2)*XP(I):NEXT I
  69. 290 FOR J=0 TO N:XQ(I)=XQ(I)+A(I,J)*AX(J):NEXT J
  70. 295 FOR K=0 TO NN:XQ(I)=XQ(I)+B(I,K)*Z(K):NEXT K
  71. 300 NEXT I
  72. 310 FOR I=0 TO N:AX(I)=X(I)+DT*XQ(I):NEXT I
  73. 320 FOR I=0 TO N:REM L340
  74. 325 XR(I)=0
  75. 330 FOR J=0 TO N:XR(I)=XR(I)+A(I,J)*AX(J):NEXT J
  76. 335 FOR K=0 TO NN:XR(I)=XR(I)+B(I,K)*Z(K):NEXT K
  77. 340 NEXT I
  78. 342 PRINT"FINAL EST."
  79. 345 FOR I=0 TO N:X(I)=X(I)+DT*(XD(I)/6+XP(I)/3+XQ(I)/3+XR(I)/6):NEXT I
  80. 350 NEXT JJ
  81. 355 FOR I=0 TO N:REM STORE SIZES
  82. 360 XX(IJ,I)=X(I):NEXT I
  83. 365 NEXT IJ
  84. 370 REM END OF SIMULATION
  85. 400 REM --- OUTPUT ---
  86. 405 PRINT"   - RUNGA-KUTTA INTEGRATION OUTPUT -"
  87. 410 PRINT "THE NUMBER OF COMPARMENTS IS";N+1
  88. 415 PRINT "THE SIMULATION HAS FINISHED 100 UNITS"
  89. 420 PRINT "THE MATRIX OF RATE COEFFICIENTS IS-"
  90. 425 FOR I=0 TO N
  91. 430 FOR J=0 TO N:PRINT TAB(J*10);A(I,J);:NEXT J
  92. 435 PRINT:NEXT I
  93. 440 PRINT"END OF PROGRAM..."
  94. 445 END
  95.  
  96.