home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpm / basic / math.ark / CRAMERS3.PRN < prev    next >
Encoding:
Text File  |  1986-12-21  |  2.6 KB  |  86 lines

  1. 0001:00 REM this is Program CRAMERS3.BAS, A program to calculate the
  2. 0002:00 REM solutions to 3 simultaneous linear equations in 3 unknowns 
  3. 0003:00 REM using Cramer's Rule of substitution to form 3X3 Determinates
  4. 0004:00 REM
  5. 0005:00 REM THIS PROGRAM WAS WRITEN BY MICHAEL P. FINERTY 10/18/84
  6. 0006:00 REM ************************************************************
  7. 0007:00 10  REM 
  8. 0008:00 REM A(N)*X1 + B(N)*X2 + C(N)*X3 = D IS AN EQUATION IN 3 UNKNOWNS
  9. 0009:00 VAR DET, DET0, DET1, DET2, DET3  = REAL.DOUBLE
  10. 0010:00 VAR A$ = STRING
  11. 0011:00 VAR N = INTEGER
  12. 0012:00 REM
  13. 0013:00 DIM COM REAL.DOUBLE   A(3) B(3) C(3) D(3) X(3) Y(3) Z(3)
  14. 0014:00 REM
  15. 0015:00 REM READ IN VALUES OF A,B,C&D FOR EACH OF THE EQUATIONS
  16. 0016:00 REM
  17. 0017:00 FOR N = 1 TO 3
  18. 0018:01     PRINT "PLEASE INPUT A(";N;")"
  19. 0019:01     INPUT A(N)
  20. 0020:01     PRINT "PLEASE INPUT B(";N;")"
  21. 0021:01     INPUT B(N)
  22. 0022:01     PRINT "PLEASE INPUT C(";N;")"
  23. 0023:01     INPUT C(N)
  24. 0024:01     PRINT "PLEASE INPUT D(";N;")"
  25. 0025:01     INPUT D(N)
  26. 0026:01 NEXT N
  27. 0027:00     FOR N = 1 TO 3
  28. 0028:01         X(N) = A(N)
  29. 0029:01         Y(N) = B(N) 
  30. 0030:01         Z(N) = C(N)
  31. 0031:01     NEXT N
  32. 0032:00 REM
  33. 0033:00 GOSUB 100
  34. 0034:00 REM
  35. 0035:00    DET0 = DET
  36. 0036:00 IF DET0 = 0 THEN PRINT "INCONSISTANT EQUATIONS, NO SOLUTION"
  37. 0037:00 IF DET0 = 0 THEN 200
  38. 0038:00    FOR N = 1 TO 3
  39. 0039:01       X(N) = D(N)
  40. 0040:01       Y(N) = B(N)
  41. 0041:01       Z(N) = C(N)
  42. 0042:01    NEXT N
  43. 0043:00 REM
  44. 0044:00 GOSUB 100
  45. 0045:00 REM
  46. 0046:00      DET1 = DET
  47. 0047:00 PRINT "X1 = "; DET1/DET0
  48. 0048:00 REM
  49. 0049:00     FOR N = 1 TO 3
  50. 0050:01        X(N) = A(N)
  51. 0051:01        Y(N) = D(N)
  52. 0052:01        Z(N) = C(N)
  53. 0053:01     NEXT N
  54. 0054:00 REM     
  55. 0055:00 GOSUB 100
  56. 0056:00 REM
  57. 0057:00     DET2 = DET
  58. 0058:00 PRINT "X2 =";DET2/DET0
  59. 0059:00 REM
  60. 0060:00      FOR N = 1 TO 3
  61. 0061:01        X(N) = A(N)
  62. 0062:01        Y(N) = B(N)
  63. 0063:01        Z(N) = D(N)
  64. 0064:01     NEXT N
  65. 0065:00 REM
  66. 0066:00 GOSUB 100
  67. 0067:00 REM
  68. 0068:00      DET3 = DET
  69. 0069:00 REM
  70. 0070:00 PRINT "X3 = ";DET3/DET0
  71. 0071:00 REM
  72. 0072:00 200 REM
  73. 0073:00 PRINT "DO YOU WISH TO SOLVE ANOTHER SET OF EQUATIONS? Y/N?"
  74. 0074:00 INPUT A$ 
  75. 0075:00 IF A$ = "y" OR A$ = "Y" THEN 10
  76. 0076:00 END
  77. 0077:00 100 REM SUBROUTINE TO CALCULATE DETERMINATES FROM X(N),Y(N) AND
  78. 0078:00 REM Z(N)
  79. 0079:00 REM
  80. 0080:00     DET = X(1)*Y(2)*Z(3) + X(2)*Y(3)*Z(1) + X(3)*Y(1)*Z(2)
  81. 0081:00     DET = DET - X(3)*Y(2)*Z(1) - X(1)*Y(3)*Z(2) - X(2)*Y(1)*Z(3)
  82. 0082:00 RETURN
  83. 0083:00  
  84. 0084:00                ****** End of program ******
  85.  
  86.