PROGRAM D9R13 C Driver for routine MNEWT PARAMETER(NTRIAL=5,TOLX=1.0E-6,N=4,TOLF=1.0E-6,NP=15) DIMENSION X(NP),ALPHA(NP,NP),BETA(NP) DO 15 KK=-1,1,2 DO 14 K=1,3 XX=0.2*K*KK WRITE(*,'(/1X,A,I2)') 'Starting vector number',K DO 11 I=1,4 X(I)=XX+0.2*I WRITE(*,'(1X,T5,A,I1,A,F5.2)')'X(',I,') = ',X(I) 11 CONTINUE DO 13 J=1,NTRIAL CALL MNEWT(1,X,N,TOLX,TOLF) CALL USRFUN(X,ALPHA,BETA) WRITE(*,'(/1X,T5,A,T14,A,T29,A/)')'I','X(I)','F' DO 12 I=1,N WRITE(*,'(1X,I4,2E15.6)')I,X(I),-BETA(I) 12 CONTINUE WRITE(*,'(/1X,A)') 'press RETURN to continue...' READ(*,*) 13 CONTINUE 14 CONTINUE 15 CONTINUE END SUBROUTINE USRFUN(X,ALPHA,BETA) PARAMETER(NP=15) DIMENSION ALPHA(NP,NP),BETA(NP),X(NP) ALPHA(1,1)=-2.0*X(1) ALPHA(1,2)=-2.0*X(2) ALPHA(1,3)=-2.0*X(3) ALPHA(1,4)=1.0 ALPHA(2,1)=2.0*X(1) ALPHA(2,2)=2.0*X(2) ALPHA(2,3)=2.0*X(3) ALPHA(2,4)=2.0*X(4) ALPHA(3,1)=1.0 ALPHA(3,2)=-1.0 ALPHA(3,3)=0.0 ALPHA(3,4)=0.0 ALPHA(4,1)=0.0 ALPHA(4,2)=1.0 ALPHA(4,3)=-1.0 ALPHA(4,4)=0.0 BETA(1)=X(1)**2+X(2)**2+X(3)**2-X(4) BETA(2)=-X(1)**2-X(2)**2-X(3)**2-X(4)**2+1.0 BETA(3)=-X(1)+X(2) BETA(4)=-X(2)+X(3) END