SUBROUTINE EIGEN (A,S) C ****************************************************************** C * * C * SUBROUTINE 'EIGEN' COMPUTES THE EIGEN VALUES AND * C * EIGEN VECTORS FOR A 3-D CASE. IT CALLS 'EIGENZ' WHICH DOES * C * THE COMPUTATION OF THE EIGEN VALUES AND VECTORS AND THEN * C * PRINTS THE FINAL RESULTS. * C * * C * INPUT: * C * A - THE VARIANCE CO-VARIANCE MATRIX * C * * C * OUTPUT: * C * A - AN ARRAY CONTAINING THE EIGEN VECTORS, * C * S - THE SEMI MAJOR AXES. * C * * C * NOTE: THE VARIANCE CO-VARIANCE MATRIX IS * C * DESTROYED. * C * * C * BY: H. MONIWA (1973) * C * MODIFIED BY: R. CALDWELL (1976) * C * * C ****************************************************************** C IMPLICIT REAL*8 (A-H,O-Z), INTEGER*4 (I-N) DIMENSION A(3,3),R(9),EV(3),WS(6),S(3),B(3,3) INTEGER*4 XYZ(3)/'X','Y','Z'/ C EQUIVALENCE (R(1),B(1)) C C PROGRAM FOR THE ANALYSIS OF ERROR ELLIPSOID C A(2,1)=A(1,2) A(3,1)=A(1,3) A(3,2)=A(2,3) 40 CONTINUE C SUMA=0.0 DO 50 I=1,3 50 SUMA=SUMA+A(I,I) C WRITE(6,11) WRITE(6,12) ((A(I,J),J=1,3),I=1,3) C C EIGENVALUES AND EIGENVECTORS C CALL EIGENZ(A,R,EV,WS,3,3,0) C SUMS=0.0 NEG=1 C DO 60 I=1,3 IF(EV(I).LT.0.0) NEG=-1 SUMS=SUMS+EV(I) S(I)=DSQRT(DABS(EV(4-I))) DO 60 J=1,3 60 A(I,J)=R(9-I*3+J) C WRITE(6,13) (EV(4-I),(A(I,J),J=1,3),I=1,3) C DO 65 I=1,3 DO 65 J=1,3 B(I,J)=0.0 DO 65 K=1,3 65 B(I,J)=B(I,J)+A(K,I)*A(K,J) C PAI=3.1415926535898 DO 70 I=1,3 DO 70 J=1,3 70 A(I,J)=DARCOS(A(I,J))*180.0D0/PAI C IF(NEG.EQ.-1) GO TO 100 C WRITE(6,14) WRITE(6,17) WRITE(6,15) (XYZ(I),S(I),XYZ(I),(A(I,J),J=1,3),I=1,3) WRITE(6,16) ((B(I,J),J=1,3),I=1,3) C GOTO 115 100 WRITE(6,18) C 115 RETURN 11 FORMAT(1H1,//, T35,'*********************************',/, * T35,'* *',/, * T35,'* ANALYSIS OF ERROR-ELLIPSOID *',/, * T35,'* *',/, * T35,'*********************************',///) 12 FORMAT(1H0, 5X, '(1) READ-IN COVARIANCE MATRIX:',//,(T10,3D16.6)) 13 FORMAT(1H0,/,6X,'(2) EIGENVALUES AND EIGENVECTORS OF COVARIANCE ', * 'MATRIX:',// ,T14,'EIGENVALUES',T41,'EIGENVECTORS (DIRECTI', * 'ON COSINES)',//,(T9, F15.6,T34,F15.6,2F12.6)) 14 FORMAT(1H0,/, 6X,'(3) PARAMETERS OF STANDARD ERROR-ELLIPSOID (19', * '.9% CONFIDENCE REGION):') 15 FORMAT(1H0,T41,'SPATIAL ANGLES (IN DEGREES) BETWEEN AXES',//, * T14,'SEMI-MAJOR AXES', T53,'X(MODEL)', 2X,'Y(MODEL)', 2X, * 'Z(MODEL)',//,(T14,A1,' =',F12.6,T41,A1,'(ELLIPSOID)', * F7.2,2F10.2)) 16 FORMAT(1H0,/, 6X,'(4) ORTHOGONALITY TEST',11H (M'M = I):,//, * (T10,3F16.6)) 17 FORMAT(1H+,T25,'________') 18 FORMAT(1H0,//,6X,'***(ERROR)*** NEGATIVE EIGENVALUE(S) DETECTED', * //,20X,'CHECK INPUT DATA FOR ROUND-OFF ERRORS') END