10 REM **** HP TIME-SHARED BASIC PROGRAM LIBRARY ******************* 20 REM 30 REM EQUIL2: EQUILIBRIUM SYSTEMS 40 REM 50 REM 36308 (A833) REV A -- 10/71 60 REM 70 REM **** CONTRIBUTED PROGRAM ************************************ 80 REM EQUIL2 - COPYRIGHT 1971, POLYTECHNIC INSTITUTE OF BROOKLYN 90 REM EQUILIBRIUM SYSTEM, JOHN MARCHISOTTO 100 REM REVISED 8/20/70 (D. PESSEL) 110 DIM D[20],E[20],F[20],W[3] 120 LET D1=0 130 LET E1=0 140 LET F1=0 150 PRINT "THIS PROGRAM WILL INVESTIGATE THE EQUILIBRIUM SYSTEM" 160 PRINT 170 PRINT " PCL5 = PCL3 + CL2" 180 PRINT 190 PRINT "WHAT IS THE EQUILIBRIUM CONSTANT"; 200 INPUT K 210 IF K >= 0 THEN 240 220 PRINT "THE EQUILIBRIUM CONSTANT MUST BE NON-NEGATIVE." 230 GOTO 190 240 PRINT "WHAT IS THE INITIAL CONCENTRATION OF PCL5"; 250 INPUT A 260 IF A >= 0 THEN 290 270 PRINT "THE INITIAL CONCENTRATION OF PCL5 MUST BE NON-NEGATIVE." 280 GOTO 240 290 PRINT 300 PRINT "WOULD YOU LIKE THE RESULTS PLOTTED (1), TABULATED (2)" 310 PRINT "OR BOTH (3) (TYPE THE APPROPRIATE NUMBER)"; 320 INPUT Q1 330 IF Q1<2 THEN 400 340 PRINT 350 PRINT 360 PRINT "INIT. CL2"," EQUIL. PCL3"," EQUIL. CL2"," EQUIL. PCL5" 370 PRINT "----------"," -----------"," ----------"," -----------" 380 PRINT "INIT. PCL5"," INIT. PCL5"," INIT. PCL5"," INIT. PCL5" 390 PRINT 400 LET B=K/A 410 FOR X=1 TO 16 420 LET X1=X-1 430 LET D[X]=(-(B+X1)+SQR((B+X1)*(B+X1)+4*B))/2 440 LET E[X]=X1+D[X] 450 LET F[X]=1-D[X] 460 IF Q1<2 THEN 480 470 PRINT X1,D[X],E[X],F[X] 480 IF D[X] 2 THEN 640 560 PRINT 570 PRINT "*****" 580 PRINT 590 PRINT "WOULD YOU LIKE ANOTHER RUN (1-YES, 0-NO)"; 600 INPUT Q2 610 IF Q2>0 THEN 190 620 STOP 630 REM PLOTTING ROUTINE FOR THREE CURVES 640 PRINT 650 PRINT 660 PRINT "A: (EQUIL. PCL3)/(INIT. PCL5) MAXIMUM IS "D1 670 PRINT "B: (EQUIL. CL2)/(INIT. PCL5) MAXIMUM IS "E1 680 PRINT "C: (EQUIL. PCL5)/(INIT. PCL5) MAXIMUM IS "F1 690 PRINT 700 PRINT "INIT. CL2";TAB(29);"A - B - C" 710 PRINT "---------- 0 25 50 75 100"; 720 PRINT " % OF MAXIMUM" 730 PRINT "INIT. PCL5 I---------I---------I---------I---------I" 740 FOR X=1 TO 16 750 PRINT TAB(5);X-1;TAB(13);"I"; 760 LET W[1]=INT(40*D[X]/D1+.5) 770 LET W[2]=INT(40*E[X]/E1+.5) 780 LET W[3]=INT(40*F[X]/F1+.5) 790 REM FIND WHICH IS SMALLEST, THEN PRINT IT AND MAXIMIZE IT 800 FOR Q=1 TO 3 810 LET K1=1.E+20 820 FOR I=1 TO 3 830 IF W[I]>K1 THEN 850 840 LET K1=W[I] 850 NEXT I 860 PRINT TAB(K1+13); 870 FOR I=1 TO 3 880 IF ABS(W[I]-K1)<.0001 THEN 910 890 NEXT I 900 STOP 910 IF I <> 1 THEN 940 920 PRINT "A"; 930 GOTO 990 940 IF I <> 2 THEN 970 950 PRINT "B"; 960 GOTO 990 970 IF I <> 3 THEN 900 980 PRINT "C"; 990 LET W[I]=1.E+25 1000 NEXT Q 1010 PRINT " " 1020 NEXT X 1030 PRINT 1040 PRINT 1050 GOTO 570 1060 END