53280,0: 53281,0:""'""K JACOBI METHOD FOR FINDING THEq EIGENVALUES AND EIGENVECTORS OF A SYMETRIC MATRIX ******************************* ORIGINAL BASIC PROGRAM BY DR. THOMAS MITCHEL. PORTED TO  THE COMMODORE 64 BY JIM STUBBE>  *******************************Q  TITLE SCREEN{ " EIGENVALUE/EIGENVECTOR FINDER"  :" BY JIM STUBBE": " THIS PROGRAM FINDS THE" " EIGENVALUES AND EIGENVACTORS" " OF A SYMETRIC MATRIX USING"V " THE JACOBI METHOD."::" THE EQN SOLVED IS:z " A(NN)B(N)=CI(NN)B(N)": " WHERE A IS A SQUARE MATRIX," " I IS THE IDENTITY MATRIX, C IS A" " SCALAR AND B IS A VECTOR.":  INPUT DEGREE OF MATRIX AL !"ENTER DEGREE OF A (A IS N BY N)": N%U "NN% $:" ******(HIT ANY KEY TO CONTINUE)****** " % A$: A$"" 37 & "" ' DIMENSION A AND R ( A(N%,N%),R(N%,N%),XX(N%,N%),C(N%,N%) ) 6000 * INPUT ELEMENTS OF A 2 I1 N%. < J1 N%P F" ENTER A("I""J"):": A(I,J)X Z J` d I n::"DO YOU WANT OUTPUT PRINTED(Y/N)?" o B$: B$"" 111 p B$"Y" 114 qCT0: 116 r OPEN PRINTER AND SET PRINT CONTROL (CT) s 4,4:CT1 t GOSUB TO PRINT A( u"": 3000E w INITIALIZE UNIT MATRIXK xe y:"THE MATRIX I IS:"k z { CT1 4,: CT1 4,"THE MATRIX I IS:" | CT1 4, } SET TR (TRACE(A)) TO ZERO ~TR0 A1 N% B1 N% AB R(A,B)1: AB 180$R(A,B)0A CT1 4, R(A,B);" ";S R(A,B);" ";l AB TRTRA(A,B)t B CT1 4, A: CT1 4,:" *****(HIT ANY KEY TO CONTINUE*****" S$: S$"" 207"" NUSWEEP0NSKIP0& I1 N%10LI1? JL N%[AVRG.5(A(I,J)A(J,I))r"DELTA(I,I)A(J,J),RAD(DELTDELT4AVRGAVRG)6 RAD0 430@ RAD0 390J (A(I,I))(A(I,I))100(AVRG) 350T 360!^ (A(J,J))(A(J,J))100(AVRG) 430?hCSN((RADDELT)(2RAD))UrSNAVRG(RADCSN)_| 420|SN((RADDELT)(2RAD)) AVRG0 SNSNCSNAVRG(RADSN) 11(SN) 450NSKIPNSKIP1 580 K1 N%QA(I,K)A(I,K)CSNQSNA(J,K)/A(J,K)SNQCSNA(J,K)7 KF K1 N%SQA(K,I)nA(K,I)CSNQSNA(K,J)A(K,J)SNQCSNA(K,J)QR(K,I)&R(K,I)CSNQSNR(K,J)0R(K,J)SNQCSNR(K,J): KD JN IO"---------------------------------------"OP CT1 4,"---------------------------------------"X CT1 4,"NUSWEEP="NUSWEEP,"NSKIP="NSKIPY "NUSWEEP="NUSWEEP,"NSKIP="NSKIPZ CALL SUBROUTINE TO PRINT A[:"THE MODIFIED MATRIX A IS:"\(] CT1 4,: CT1 4,"THE MODIFIED MATRIX A IS:"9^ CT1 4,D_ 3010ZaNUSWEEPNUSWEEP1sb NUSWEEP50 630l NSKIPN(N1)2 240v PRINT FINAL SWEEP VALUESw"---------------------------------------"x CT1 4,"---------------------------------------"@y"NUSWEEP="NUSWEEP,"NSKIP="NSKIP:}z CT1 4,"NUSWEEP="NUSWEEP,"NSKIP="NSKIP: CT1 4,{"THE MODIFIED MATRIX A IS:":| CT1 4,"THE MODIFIED MATRIX A IS:": CT1 4,} 3010 CHECK EIGENVALUES 4000 PRINT EIGENVALUES* 5000B PRINT EIGENVALUES^"THE EIGENVALUES ARE:" CT1 4,"THE EIGENVALUES ARE:" CT1 4, J1 N% J,A(J,J) CT1 4,J,A(J,J) J CT1 4,  PRINT EIGENVECTORS*"THE EIGENVECTORS ARE:":_ CT1 4,"THE EIGENVECTORS ARE:": CT1 4,n I1 N%} J1 N% R(I,J);" "; CT1 4,R(I,J);" "; J CT1 4, I  ************************** SUBROUTINE PRINT A7 **************************Q "THE MATRIX A IS:": CT1 4,"THE MATRIX A IS:": CT1 4, C1 N% B1 N% CT1 4,A(C,B);" "; A(C,B);" "; B CT1 4,  C CT1 4,   3 ***************************U SUBROUTINE CHECK EIGENVALUEw ***************************"***************************************" CT1 4,"***************************************"TC0 G1 N% TCTCA(G,G) G@"(AS A CHECK THESE SHOULD BE THE SAME)":x CT1 4,"(AS A CHECK THESE SHOULD BE THE SAME)" CT1 4,"THE TRACE OF ORIGINAL A IS:"TR"SUM OF A'S EIGENVALUES ARE:"TC: CT1 4,"THE TRACE OF ORIGINAL A IS:"TR4 CT1 4,"SUM OF A'S EIGENVALUES ARE:"TCG: CT1 4,Mp **************************** SUBROUTINE CHECK EIGENVECTOR **************************** FIND TRANSPOSE OF EIGENVECTORS I1 N% J1 N% XX(J,I)R(I,J) J I> MULTIPLY I BY ITS TRANSPOSEM I1 N%\P J1 N%hZSUM0.0wd K1 N%SUMSUM(R(I,K)XX(K,J))C(I,J)SUM K J I, CT1 4,"(AS A CHECK THE FOLLOWING SHOULD BE ";6 CT1 4,"THE IDENTITY MATRIX)"]|:"(AS A CHECK THE FOLLOWING SHOULD BE THE IDENTITIY MATRIX)"p: CT1 4,D I1 N%N J1 N%X C(I,J);" ";] CT1 4,C(I,J);" ";b Jlq CT1 4,v Iw: CT1 4,p *************************8z SUBROUTINE GRAPHIC AX *************************y"MATRIX A IS AS FOLLOWS:":" A(1,1) A(1,2) ....A(1,N)"" A(2,1) A(2,2) ....A(2,N)"" A(3,1) A(3,2) ....A(3,N)"" . . . "(" . . . "K" . . . "n" A(N,1) A(N,2) ....A(N,N)"vX: