SUBROUTINE NL2S1(N, P, X, CALCR, CALCJ, IV, LIV, LV, V, 1 UIPARM, URPARM, UFPARM) C C C *** PARAMETERS *** C INTEGER N, P, LIV, LV C INTEGER IV(LIV), UIPARM(1) REAL X(P), V(LV), URPARM(1) C C INTEGER IV(LIV), UIPARM(*) C REAL X(P), V(LV), URPARM(*) C EXTERNAL CALCR, CALCJ, UFPARM C C *** DISCUSSION *** C C LIV GIVES THE LENGTH OF IV. IT MUST BE AT LEAST 80+P. IF NOT, C THEN NL2S1 RETURNS WITH IV(1) = 15. WHEN NL2S1 RETURNS, THE C MINIMUM ACCEPTABLE VALUE OF LIV IS STORED IN IV(LASTIV) = IV(44), C (PROVIDED THAT LIV .GE. 44). C C LV GIVES THE LENGTH OF V. THERE ARE TWO POSSIBLE RANGES FOR C LV. IN WHAT FOLLOWS, THEY ARE EXPRESSED IN TERMS OF LV0... C LV0 = 105 + P*(N + 2*P + 17) + N + RDLEN(IV(RDREQ)), WHERE C RDLEN(0) = 0, RDLEN(1) = RDLEN(2) = N, AND RDLEN(3) = 2*N. C C IF LV IS AT LEAST LV0 + N, THEN AN OLD COPY OF R IS SAVED TO C AVOID HAVING TO RECOMPUTE IT UNDER CERTAIN CONDITIONS. C IF LV IS SMALLER THAN LV0, THEN NL2S1 RETURNS WITH IV(1) = 16. C WHEN NL2S1 RETURNS, THE MINIMUM ACCEPTABLE VALUE OF LV IS STORED C IN IV(LASTV) = IV(45) (PROVIDED LV .GE. 45). C C RETURN CODES AND CONVERGENCE TOLERANCES ARE THE SAME AS FOR C NL2SOL, WITH SOME SMALL EXTENSIONS... IV(1) = 15 MEANS LIV WAS C TOO SMALL. IV(1) = 16 MEANS LV WAS TOO SMALL. C C THERE ARE TWO NEW V INPUT COMPONENTS... V(LMAXS) = V(36) AND C V(SCTOL) = V(37) SERVE WHERE V(LMAX0) AND V(RFCTOL) FORMERLY DID C IN THE SINGULAR CONVERGENCE TEST -- SEE THE NL2SOL DOCUMENTATION. C C *** DEFAULT VALUES *** C C DEFAULT VALUES ARE PROVIDED BY SUBROUTINE DEFLT, RATHER THAN C DFAULT. THE CALLING SEQUENCE IS... C CALL DEFLT(1, IV, LIV, LV, V) C THE FIRST PARAMETER IS AN INTEGER 1. IF LIV AND LV ARE LARGE C ENOUGH FOR DEFLT, THEN DEFLT SETS IV(1) TO 12. OTHERWISE IT C SETS IV(1) TO 15 OR 16. CALLING NL2S1 WITH IV(1) = 0 CAUSES ALL C DEFAULT VALUES TO BE USED FOR THE INPUT COMPONENTS OF IV AND V. C IF YOU FIRST CALL DEFLT, THEN SET IV(1) TO 13 AND CALL NL2S1, C THEN STORAGE ALLOCATION ONLY WILL BE PERFORMED. IN PARTICULAR, C IV(D) = IV(27), IV(J) = IV(70), AND IV(R) = IV(61) WILL BE SET C TO THE FIRST SUBSCRIPT IN V OF THE SCALE VECTOR, THE JACOBIAN C MATRIX, AND THE RESIDUAL VECTOR RESPECTIVELY, PROVIDED LIV AND LV C ARE LARGE ENOUGH. IF SO, THEN NL2S1 RETURNS WITH IV(1) = 14. C WHEN CALLED WITH IV(1) = 14, NL2S1 ASSUMES THAT STORAGE HAS C BEEN ALLOCATED, AND IT BEGINS THE MINIMIZATION ALGORITHM. C C *** SCALE VECTOR *** C C ONE DIFFERENCE WITH NL2SOL IS THAT THE SCALE VECTOR D IS C STORED IN V, STARTING AT A DIFFERENT SUBSCRIPT. THE STARTING C SUBSCRIPT VALUE IS STILL STORED IN IV(D) = IV(27). THE C DISCUSSION OF DEFAULT VALUES ABOVE TELLS HOW TO HAVE IV(D) SET C BEFORE THE ALGORITHM IS STARTED. C C *** REGRESSION DIAGNOSTICS *** C C IF IV(RDREQ) SO DICTATES, THEN ESTIMATES ARE COMPUTED OF THE C INFLUENCE EACH RESIDUAL COMPONENT HAS ON THE FINAL PARAMETER C ESTIMATE X. THE GENERAL IDEA IS THAT ONE MAY WISH TO EXAMINE C RESIDUAL COMPONENTS (AND THE DATA BEHIND THEM) FOR WHICH THE C INFLUENCE ESTIMATE IS SIGNIFICANTLY LARGER THAN MOST OF THE OTHER C INFLUENCE ESTIMATES. TWO SLIGHTLY DIFFERING SUCH ESTIMATES, C HEREAFTER CALLED REGRESSION DIAGNOSTICS, MAY BE COMPUTED... C IF IV(RDREQ) = 1, THEN FOR I = 1(1)N, C SQRT( G(I)**T * H(I)**-1 * G(I) ) C IS COMPUTED AND STORED IN V, STARTING AT V(IV(REGD)), WHERE C RDREQ = 57 AND REGD = 67. HERE G(I) STANDS FOR THE GRADIENT C RESULTING WHEN THE I-TH OBSERVATION IS DELETED AND H(I) STANDS C FOR AN APPROXIMATION TO THE CORRESPONDING HESSIAN AT X, THE SOLU- C TION CORRESPONDING TO ALL OBSERVATIONS. (THIS APPROXIMATION IS C OBTAINED BY SUBTRACTING THE FIRST-ORDER CONTRIBUTION OF THE I-TH C OBSERVATION TO THE HESSIAN FROM A FINITE-DIFFERENCE HESSIAN C APPROXIMATION.) IF IV(RDREQ) = 2 AND H, THE FINITE-DIFFERENCE C HESSIAN, IS POSITIVE DEFINITE, THEN FOR I = 1(1)N, C SQRT( G(I)**T * H(I)**-1 * H * H(I)**-1 * G(I) ) C IS STORED IN V, AGAIN STARTING AT V(IV(REGD)). (IF H IS C INDEFINITE, THEN IV(REGD) IS SET TO -1. IF H(I) IS INDEFINITE, C THEN -1 IS RETURNED AS THE DIAGNOSTIC FOR OBSERVATION I. IF NO C DIAGNOSTICS ARE COMPUTED, PERHAPS BECAUSE OF A FAILURE TO C CONVERGE, THEN IV(REGD) = 0 IS RETURNED.) C IF IV(RDREQ) = 3, THEN BOTH SETS OF DIAGNOSTICS ARE COMPUTED. C THOSE FOR IV(RDREQ) = 1 ARE STORED AS DESCRIBED ABOVE, AND THOSE C FOR IV(RDREQ) ARE STORED IMMEDIATELY THEREAFTER, I.E., IN V, C STARTING AT V(IV(REGD)+N). C PRINTING OF THE REGRESSION DIAGNOSTICS IS CONTROLLED BY C IV(COVPRT) = IV(14)... IF IV(COVPRT) = 3, THEN BOTH THE C COVARIANCE MATRIX AND THE REGRESSION DIAGNOSTICS ARE PRINTED. C IV(COVPRT) = 2 CAUSES ONLY THE REGRESSION DIAGNOSTICS TO BE C PRINTED, IV(COVPRT) = 1 CAUSES ONLY THE COVARIANCE MATRIX TO BE C PRINTED, AND IV(COVPRT) = 0 CAUSES NEITHER TO BE PRINTED. C C RDREQ = 57 AND REGD = 67. C C *** GENERAL *** C C CODED BY DAVID M. GAY.