rem system of non linear equations solver PRINT "PROGRAM WITH PIVOTING STRATEGY" A=15 DIM C(A,A),F(A),D(A,A),G(A),X(A),S(A),E(A),A(A) GOSUB 1020 PRINT "NUMBER OF EQUATIONS =";NR M=NR:N=M+1 PRINT" ALL GUESSES =1" T=.01'STEP IN NUMDER, TRY TO CHANGE IT PP=200'MAX ITERATIONS REM ***** GUESS INITIAL ROOTS ****** FOR J=1 TO M PRINT "X";J;A$(J); INPUT " ";AA: S(J)=AA NEXT J REM ***** CALCULATION OF COEFFICIENTS ***** FOR Q=1 TO PP GOSUB 2020 FOR I=1 TO M F(I)=A(I) NEXT I FOR J=1 TO M S(J)=S(J)+T GOSUB 2020 FOR I=1 TO M D(I,J)=(A(I)-F(I))/T NEXT I S(J)=S(J)-T NEXT J FOR I=1 TO M G(I)=(-1)*F(I) FOR J=1 TO M G(I)=G(I)+S(J)*D(I,J) NEXT J NEXT I FOR I=1 TO M C(I,N)=G(I) FOR J=1 TO M C(I,J)=D(I,J) 'print USING("#######.###",C(I,J)); NEXT J 'priNT USING("#######.###",C(I,N)) NEXT I REM ******* SOLVING OF LINEARIZED EQUATION SYSTEM ***** FOR J=1 TO M MYI=J [LOOPMYI] I=MYI C(I,J)=C(I,J)+10^(-12)'TO PLANT A SEED TO CHEAT IF C(I,J)<>0 GOTO [CALC] MYI=MYI+1 IF MYI<=M THEN [LOOPMYI] PRINT "SORRY NO UNIQUE SOLUTION" PRINT "PRESS ENTER TO END" END [CALC] FOR K=1 TO N X=C(J,K) C(J,K)=C(I,K) C(I,K)=X NEXT K Y=1/C(J,J) FOR K=1 TO N C(J,K)=Y*C(J,K) NEXT K FOR I=1 TO M IF I=J goto [leap] Y=(-1)*C(I,J) FOR K=1 TO N C(I,K)=C(I,K)+Y*C(J,K) NEXT K [leap] NEXT I NEXT J PRINT PRINT" *** SOLUTION VECTOR ***" CC=0 FOR J=1 TO M X(J)=C(J,N) H=(X(J)-S(J))/S(J) CC=CC+H PRINT J;" ";A$(J);" ";INT(X(J)*1000 +.5)/1000 S(J)=X(J) NEXT J PRINT "error =";CC IF ABS(CC)<(.000001) THEN GOTO [END] NEXT Q [END] PRINT "PRESS ENTER TO END" INPUT R$ PRINT " **** END ****" END 1020 REM *** SUBROUTINE NUMBER OF EQUATIONS *** NR=5 RETURN 2020 REM **** SUBROUTINE EQUATIONS ****'TO USE: CHANGE AT 2 LOCATIONS IN THE MAIN PROGRAM S1=S(1): S2=S(2): S3=S(3): S4=S(4): S5=S(5) S6=S(6): S7=S(7): S8=S(8): S9=S(9): S10=S(10) REM ****************************** A(1)=S1+S2-3 A(2)=S1+S2^(2)-5 A(3)=S1^(2)+S4^(2)-17 A(4)=S5+S3^(2)-14 A(5)=S4+S5-9 A$(1)=" ROOT1 ":A$(2)=" ROOT2 ":A$(3)=" ROOT3 " A$(4)=" ROOT4 ":A$(5)=" ROOT5 ":A$(6)=" " A$(7)=" ":A$(8)=" ":A$(9)=" " RETURN 1060 REM *** SUBROUTINE NUMBER OF EQUATIONS *** NR=9 RETURN 2060 REM **** SUBROUTINE EQUATIONS **** S1=S(1): S2=S(2): S3=S(3): S4=S(4): S5=S(5) S6=S(6): S7=S(7): S8=S(8): S9=S(9): S10=S(10) REM ****************************** ' SUB 6 PT=1 'pressure T1=1000 'temp K MO2=2'MOL MH2=.5'MOL MC =1'MOL MN2=6'MOL 'K1=2.155*10^(6)*EXP(-13667/T1) 'C+H20 K2=.00574*EXP(5691/T1) 'SHIFT K3=5.22*10^(-11)*EXP(9367/T1) 'NH3 K4=3.5*10^(-5)*EXP(8224/T1) 'CH4 1100K K5=9.6610^(-10)*EXP(67835/T1) '2C0+O2 A(1)=K5*S2^(2)*S1 -S3^(2) 'C0 +1/2O2 A(2)=K2*S2*S5 -S3*S4 'SHIFT EQ A(3)=K3*S7*S4^(3) -S8^(2) 'NH3 EQ A(4)=K4*S4^(2) -S9+10^(-10) 'CH4 EQ A(5)=S2+S3+S9 -PT/S6*MC 'C BAL. A(6)=S4+S5+2*S9+1.5*S8 -PT/S6*MH2 'H2 BAL A(7)=S2+2*S3+S5+2*S1 -PT/S6*MO2*2 'O BAL A(8)=S8+2*S7 -PT/S6*MN2*2 'N BAL. A(9)=S1+S2+S3+S4+S5+S7+S8+S9-PT 'DALTON A$(1)=" O2 ":A$(2)=" C0 ":A$(3)=" CO2 " A$(4)=" H2 ":A$(5)=" H20 ":A$(6)=" NTOT " A$(7)=" N2 ":A$(8)=" NH3 ":A$(9)=" CH4 " ' 1=O2 2=CO 3=C02 4=H2 5=H20 6=NTOT 7=N2 8=NH3 9=CH4 ' A$(1)="CH4; 2";A$(2)="CO " RETURN