SUBROUTINE PRT(N,F,MU,X,Z1,Z2,KOUT,KIN) ************************************************************************ * * * printing the results * * * ************************************************************************ * REAL*8 F(N),X(N),Z1,Z2,MU * WRITE(7,1000) 'ITERATION',KOUT,'NUMBER OF LINE SEARCHES',KIN 1000 FORMAT(//A,I5,T30,A,I5) * DO 10 I=1,N WRITE(7,1010) I,X(I),I,F(I) * WRITE(7,*) I,X(I) 10 CONTINUE * 1010 FORMAT('X(',I3,')=',F13.6,T33,'F(X',I3,')=',F13.6) * WrITE(7,*) 'epsilon=',MU WRITE(7,*) 'pi(X)=',Z1 WRITE(7,*) 'theta(X)=',Z2 * RETURN END * SUBROUTINE GAUSS(N,T,Q,INDEX) ************************************************************************ * * * Gaussian elimination * * * ************************************************************************ * REAL*8 T(N,N),Q(N),TMP,EPS1 INTEGER PIV * EPS1=1.0D-14 INDEX=0 * DO 50 K=1,N-1 PIV=K DO 10 I=K+1,N IF(DABS(T(I,K)).GT.DABS(T(PIV,K))) PIV=I 10 CONTINUE * IF(DABS(T(PIV,K)).LT.EPS1) THEN INDEX=1 RETURN ENDIF * IF(PIV.NE.K) THEN DO 20 J=K,N TMP=T(K,J) T(K,J)=T(PIV,J) T(PIV,J)=TMP 20 CONTINUE TMP=Q(K) Q(K)=Q(PIV) Q(PIV)=TMP ENDIF * DO 40 I=K+1,N TMP=T(I,K)/T(K,K) DO 30 J=K+1,N T(I,J)=T(I,J)-TMP*T(K,J) 30 CONTINUE Q(I)=Q(I)-TMP*Q(K) 40 CONTINUE 50 CONTINUE * DO 70 K=N,1,-1 Q(K)=Q(K)/T(K,K) DO 60 I=K-1,1,-1 Q(I)=Q(I)-Q(K)*T(I,K) 60 CONTINUE 70 CONTINUE * RETURN END * *