PROGRAM TEST C C Driver for SNSQE example. C INTEGER J,N,IOPT,NPRINT,INFO,LWA,NWRITE REAL TOL,FNORM REAL X(9),FVEC(9),WA(180), IN(42) REAL ENORM,R1MACH EXTERNAL FCN COMMON IN DATA NWRITE /6/ C IOPT = 2 N = 9 C C read coefficients from standard input C do 13 k=1,42 read(*,*) IN(K) 13 continue C C C The following starting values provide a rough solution. C DO 10 J = 1, 6 X(J) = 0.E0 10 CONTINUE DO 11 J=7,9 X(J)=1.E0 11 CONTINUE LWA = 180 NPRINT = 0 C C Set TOL to the square root of the machine precision. C Unless high precision solutions are required, C this is the recommended setting. C TOL = SQRT(R1MACH(4)) C CALL SNSQE(FCN,JAC,IOPT,N,X,FVEC,TOL,NPRINT,INFO,WA,LWA) FNORM = ENORM(N,FVEC) Do 20 J=1,3 X(J)=acos(X(J))*(180/3.141592) 20 Continue write (*,*) '
' write (*,*) '
' write (*,*) 'Theta 1' write (*,*) '' write (*,*) '' write (*,*) '' Write (*,101) X(1) write (*,*) '' write (*,*) '' write (*,*) '' write (*,*) 'Theta 2' write (*,*) '' write (*,*) '' write (*,*) '' write (*,101) X(2) write (*,*) '' write (*,*) '' write (*,*) '' write (*,*) 'Theta 3' write (*,*) '' write (*,*) '' write (*,*) '' write (*,101) X(3) write (*,*) '
' write (*,*) 'Tension 1' write (*,*) '' write (*,*) '' write (*,*) '' write (*,101) X(7) write (*,*) '' write (*,*) '' write (*,*) '' write (*,*) 'Tension 2' write (*,*) '' write (*,*) '' write (*,*) '' write (*,101) X(8) write (*,*) '' write (*,*) '' write (*,*) '' write (*,*) 'Tension 3' write (*,*) '' write (*,*) '' write (*,*) '' write (*,101) X(9) write (*,*) '
' write (*,*) '



' C WRITE (NWRITE,1000) FNORM,INFO,(X(J),J=1,5,2),(X(J),J=2,6,2) STOP 101 FORMAT (F6.3) C 1000 FORMAT (5X,' FINAL L2 NORM OF THE RESIDUALS',E15.7,'0', C * 5X,' EXIT PARAMETER',16X,I10 // C * 5X,' FINAL APPROXIMATE SOLUTION' // C * (5X,E15.7,'
',E15.7,'
',E15.7,'
')) END SUBROUTINE FCN(N,X,FVEC,IFLAG) INTEGER N,IFLAG REAL X(N),FVEC(N), IN(42) INTEGER K COMMON IN DO 16 K=1, 9 FVEC(K)=0E0 16 CONTINUE DO 17 K=1, 6 FVEC(1)=FVEC(1)+IN(K)*X(K) FVEC(2)=FVEC(2)+IN(K+7)*X(K) 17 CONTINUE DO 18 K=1,3 FVEC(3)=FVEC(3)+IN(14+K)*X(K)*X(6+K)+IN(17+K)*X(K+3)*X(K+6) FVEC(4)=FVEC(4)+IN(21+K)*X(K)*X(6+K)+IN(24+K)*X(K+3)*X(K+6) FVEC(5)=FVEC(5)+IN(28+K)*X(K)*X(6+K)+IN(31+K)*X(K+3)*X(K+6) FVEC(6)=FVEC(6)+IN(35+K)*X(K)*X(6+K)+IN(38+K)*X(K+3)*X(K+6) 18 CONTINUE DO 19 K=1, 6 FVEC(K)=FVEC(K)-IN(K*7) 19 CONTINUE FVEC(7)=X(1)*X(1)+X(4)*X(4)-1E0 FVEC(8)=X(2)*X(2)+X(5)*X(5)-1E0 FVEC(9)=X(3)*X(3)+X(6)*X(6)-1E0 RETURN END C C Results obtained with different compilers or machines C may be slightly different. C C FINAL L2 NORM OF THE RESIDUALS 0.1192636E-07 C C EXIT PARAMETER 1 C C FINAL APPROXIMATE SOLUTION C C -0.5706545E+00 -0.6816283E+00 -0.7017325E+00 C -0.7042129E+00 -0.7013690E+00 -0.6918656E+00 C -0.6657920E+00 -0.5960342E+00 -0.4164121E+00 C