Trailing-Edge
-
PDP-10 Archives
-
decus_20tap4_198111
-
decus/20-0101/nln20c.for
There is 1 other file named nln20c.for in the archive. Click here to see a list.
C --- NONLINWOOD NONLINEAR LEAST-SQUARES CURVE-FITTING PROGRAM 01CT0010
C 01CT0020
C --- 1/79 01CT0030
C 01CT0040
C *** PROGRAM CURRENTLY DIMENSIONED FOR 20 MAX VARIABLES, 20 MAX 01CT0050
C --- COEFFICIENTS, 170 OBSERVATIONS AND 2 DELETE OBSERVATIONS CARDS. 01CT0060
C 01CT0070
C GAUSHAUS PROGRAM WAS ORIGINALLY WRITTEN BY D. A. MEETER, 01CT0080
C UNIV. OF WISCONSIN, USING D. W. MARQUART'S MAXIMUM NEIGHBORHOOD 01CT0090
C METHOD. PROGRAM WAS REVISED AT STANDARD OIL (INDIANA) BY 01CT0100
C F. S. WOOD TO PROVIDE NOMENCLATURE, PRINTOUT AND PLOTS CONSISTENT 01CT0110
C WITH THE LINEAR LEAST-SQUARES CURVE FITTING PROGRAM. IT WAS 01CT0120
C MODIFIED TO ALLOW FOR OVERLAYING BY R. E. HENSCHEL. THE PROGRAM 01CT0130
C IS IN DOUBLE PRECISION FOR IBM 360 AND 370 COMPUTERS (SHARE 01CT0140
C LIBRARY PROGRAM NUMBER 360-13.6.007). 01CT0150
C 01CT0160
C PROGRAM CONVERTED AT UNIV. CAL(BERKELEY) BY N. H. TIMM TO 01CT0170
C SINGLE PRECISION FOR CDC 6000 SERIES COMPUTERS (VIM LIBRARY 01CT0180
C PROGRAM NUMBER G2-CAL-NLWOOD). UPDATED BY TIMM, WOOD, AND 01CT0190
C B. E. FOSTER AND ELI COHEN, NORTHWESTERN UNIVERSITY. 01CT0191
C 01CT0200
C PROGRAM CONVERTED AT ALCOA R&D LABORATORIES BY R. F. KOHM 01CT0210
C FOR DECSYSTEM-10 AND 20 COMPUTERS (DECUS LIBRARY PROGRAM NUMBER 01CT0220
C NONLIN-10-258). PROGRAM ADAPTED FOR INTERACTIVE USE BY 01CT0221
C E. R. ZIEGEL AT STANDARD OIL (2ND). 01CT0222
C 01CT0230
C PROGRAM CONVERTED AT UNIV. WISCONSIN BY J. D. MURAT AND 01CT0240
C T. R. ZEISLER FOR BURROUGHS 4700 AND 6700 SYSTEM COMPUTERS (CUBE 01CT0250
C LIBRARY PROGRAM NUMBER WIS/NONLINWOOD). THE PROJECT WAS 01CT0260
C INITIATED BY D. S. RUMSEY OF BURROUGHS. 01CT0261
C 01CT0270
C PROGRAM CONVERTED AT U.S. NAVAL AVIONICS FACILITY, 01CT0271
C INDIANAPOLIS, IN. BY D. F. ZARNOW FOR HONEYWELL 6000/600/66 01CT0272
C COMPUTERS (HLSUA LIBRARY PROGRAM NUMBER GES-1207). 01CT0273
C 01CT0274
C PROGRAM CONVERTED AT JOHNSON SPACE CENTER BY J. E. KEITH 01CT0280
C FOR UNIVAC 1108 AND 1110 COMPUTERS. 01CT0290
C 01CT0300
C 01CT0310
C 01CT0320
C FOR GLOSSARY OF TERMS, DEFINITIONS OF STATISTICS AND 01CT0330
C INTERPRETATION OF RESULTS SEE USER'S MANUAL IN BOOK "FITTING 01CT0340
C EQUATIONS TO DATA" BY C. DANIEL AND F. S. WOOD WITH ASSISTANCE 01CT0350
C OF J. W. GORMAN, WILEY, 2ND EDITION, 1978. 01CT0360
C 01CT0370
C 01CT0380
C 01CT0390
C --- AUXILIARY EQUIPMENT NEEDED TO RUN PROGRAM 01CT0400
C --- CARD READER (UNIT 5), AND PRINTER (UNIT 6). 01CT0410
C 01CT0420
C 01CT0430
C 01CT0440
C 01CT0450
C 01CT0460
C --- USER'S INSTRUCTIONS 01CT0470
C --- 01CT0480
C --- ORDER OF CARDS FOR EACH PROBLEM 01CT0490
C --- 1 CONTROL CARD. 01CT0500
C --- 2 FORMAT CARD (72COL). E.G. (A6,F6.0,(NOIND*F6.0)) TO READ DATA. 01CT0510
C --- 3 DELETE-OBSERVATIONS CARD(S), IF ANY 01CT0511
C --- (1ST 6 OF 10 COLS. / OBSERVATION DELETED, 7 / CARD). 01CT0512
C --- 4 STARTING VALUES (GUESSES) OF COEFFICIENTS (10COL/COEF, 7/CARD). 01CT0520
C --- 5 INFORMATION CARDS FOR PRINTOUT,IF ANY(72COL/CARD, 12 CARDS MAX).01CT0530
C --- 6 NAMES OF COEFFICIENTS CARD(S) FOR PRINTOUT, IF ANY 01CT0540
C --- (1ST 6 OF 10 COLS. / COEFFICIENT, 7 / CARD). 01CT0550
C --- 7 DATA CARDS (IF NOT READ FROM A FILE). 01CT0560
C --- 8 END CARD (END IN FIRST 3 POSITIONS OF IDENTIFICATION). 01CT0570
C --- NOTE: FORMAT, DELETE, DATA AND END CARDS ARE NOT NEEDED IN 01CT0580
C --- SUBSEQUENT PROBLEMS IF SAME INPUT DATA ARE REUSED. 01CT0590
C --- 01CT0600
C --- CONTROL CARD 01CT0610
C --- COL. 1-20 NPROB :IDENTIFICATION OF PROBLEM, 5A4. 01CT0620
C --- 21 JSAME :0 OR BLANK, OBSERVATIONS READ FROM CARDS. 01CT0630
C --- 1, REUSE DATA FROM PREVIOUS PROBLEM. 01CT0640
C --- 23-24 NC :NO. OF COEFFICIENTS TO BE ESTIMATED, I2. 01CT0650
C --- 25-26 NFILE :FILE NUMBER IF DATA ARE TO BE READ FROM 01CT0660
C --- SEPARATE FILE, NO END CARD(S) IF ONLY ONE 01CT0670
C --- SET OF DATA IS ON EACH FILE. 01CT0680
C --- 27-28 NOIND :NO. OF INDEPENDENT VARIABLES TO BE READ IN, I2 01CT0690
C --- 31-32 MODEL :NO. OF THE EQUATION TO BE USED, I2. 01CT0700
C --- 01CT0710
C --- 33-36 FLAM :STARTING VALUE FOR LAMBDA, F4.2, (E.G. 0.1), 01CT0720
C --- USED AS A MULTIPLIER TO SCALE THE SPACE OR 01CT0730
C --- SIZE STEPS TAKEN. 01CT0740
C --- 37-40 FNU :VALUE OF NU, F4.0, (E.G. 10.), 01CT0750
C --- DIVISOR AND MULTIPLIER TO CHANGE SIZE OF 01CT0760
C --- LAMBDA DEPENDING ON WHETHER SUM OF SQUARES OF 01CT0770
C --- ITERATION IS NEAR OR FAR FROM MINIMUM. 01CT0780
C --- 43-44 MIT :MAX NUMBER OF ITERATIONS, I2, (E.G. 20). 01CT0790
C --- 45-48 DIFF :MULTIPLIER USED TO INCREMENT VALUE OF 01CT0800
C --- COEFFICIENTS, F4.3 (E.G. 0.01). 01CT0810
C --- 01CT0811
C --- NOTE: IF FLAM, FNU, MIT, AND DIFF ARE NOT DEFINED 01CT0820
C --- ON THE CONTROL CARD, THEIR LEVEL WILL BE SET 01CT0830
C --- AUTOMATICALLY TO THE ABOVE E.G. VALUES. 01CT0840
C --- 01CT0850
C --- STOP :CRITERIA FOR ENDING CONVERGING ITERATIONS. 01CT0860
C --- 49-56 STOPSS:SUM OF SQUARES CRITERION, F8.7 (E.G. 0.0001, 01CT0870
C --- A CHANGE OF LESS THAN 0.0001 IN THE RESIDUAL 01CT0880
C --- SUM OF SQUARES). 01CT0890
C --- 57-64 STOPRC:RATIO OF COEFFICIENTS CRITERION, F8.7, 01CT0900
C --- (E.G. 0.001 A CHANGE OF LESS THAN 0.001 IN 01CT0910
C --- THE RATIOS OF ALL COMPARABLE COEFFICIENTS). 01CT0920
C --- 01CT0921
C --- NOTE: STOPSS AND STOPRC CAN BE SET AT 0.0 IF CONTROL 01CT0930
C --- OF EITHER OR BOTH IS NOT DESIRED. 01CT0940
C --- 01CT0950
C --- 65-66 NEQU :NO OF INFORMATION CARDS TO BE READ FOR DISPLAY 01CT0960
C --- ON PRINTOUT IF DESIRED, 72 COL.EACH, 12 MAX. 01CT0970
C --- 68 NAMEBI:1 READ NAMES OF COEFFICIENTS FROM CARDS FOR 01CT0980
C --- DISPLAY ON PRINTOUT, 1ST 6 OF 10 COLS. / 01CT0990
C --- COEFFICIENT, 7 / CARD. 01CT1000
C --- 69 NPLOT :3 PLOT RESIDUALS VS. EACH INDEPENDENT VARIABLE.01CT1010
C --- 70 NOMITC:NO OF DELETE OBSERVATION CARDS, OBSERVATION 01CT1011
C --- IDENTIFICATION IN 1ST 6 OF 10 COLS., 7 / CARD. 01CT1012
C -- 01CT1020
C --- FORMAT CARD 01CT1030
C --- COL. 1-72 E.G. (A6, F6.0, (NOIND*F6.0) 01CT1040
C --- IDENT IDENTIFICATION OF OBSERVATION, A6 01CT1050
C --- Y(J) DEPENDENT VARIABLE, J-TH OBSERVATION, F6.0 01CT1060
C --- X(I,J) INDEPENDENT VARIABLE, I-TH VARIABLE, J-TH 01CT1070
C --- OBSERVATION, NOIND*(F6.0) 01CT1080
C -- 01CT1090
C *******************************************************************01CT1100
C -- 01CT1110
C --- EQUATIONS TO BE USED WILL BE WRITTEN IN FORTRAN AND PLACED 01CT1120
C --- IN SUBROUTINE MODEL1, 2, 3, 4, OR 5 AS FOLLOWS: 01CT1130
C --- 01CT1140
C --- SUBROUTINE MODEL1 (NPROB, B, FY, NOB, NC, X, NVARX, NOBMAX, NCMAX)01CT1150
C IMPLICIT REAL*8(A-H,O-Z) 01CT1160
C --- DIMENSION B(NCMAX), FY(NOBMAX), X(NVARX,NOBMAX) 01CT1170
C 01CT1180
C --- DO 10 J=1,NOB 01CT1190
C --- EXAMPLE OF EQUATION 01CT1200
C --- FY(J)=B(1)*X(1,J)**B(2) + B(3) 01CT1210
C --- 01CT1220
C -10 CONTINUE 01CT1230
C --- RETURN 01CT1240
C --- END 01CT1250
C --- NOTE: ALL EQUATIONS ARE TO BE WRITTEN SO THAT THE 01CT1260
C --- COEFFICIENTS ESTIMATED AND CALCULATED WILL BE 01CT1270
C --- POSITIVE. IN SINGLE PRECISION PROGRAMS DELETE 01CT1280
C --- IMPLICIT REAL*(A-H,O-Z) STATEMENTS. 01CT1281
C 01CT1290
C *******************************************************************01CT1300
C * *01CT1310
C * TO PERFORM TRANSFORMATIONS, ADD SUBROUTINE BLOCK DATA AND *01CT1320
C * APPROPRIATE CARDS IN MODEL SUBROUTINE. E.G. *01CT1330
C * *01CT1340
C BLOCK DATA *01CT1350
C IMPLICIT REAL*8(A-H,O-Z) *01CT1360
C COMMON /DATA05/ IOPEN *01CT1370
C DATA IOPEN /0/ *01CT1380
C END *01CT1390
C * *01CT1400
C SUBROUTINE MODEL2 (NPROB, B, FY, NOB, NC, X, NVARX, NOBMAX, NCMAX)01CT1410
C *01CT1420
C IN THIS EXAMPLE THE VALUES OF Y ARE LOGGED AND THE RECIPROCAL *01CT1430
C OF X IS TAKEN INITIALLY AND NOT AGAIN. *01CT1440
C *01CT1450
C IMPLICIT REAL*8(A-H,O-Z) *01CT1460
C COMMON /DATA01/ IDENT(170), Y(170) *01CT1470
C COMMON /DATA05/ IOPEN *01CT1480
C DIMENSION B(NCMAX), FY(NOBMAX), X(NVARX,NOBMAX) *01CT1490
C REAL*8 IDENT *01CT1500
C *01CT1510
C IF (IOPEN .NE. 0) GO TO 7 *01CT1520
C DO 5 J = 1, NOB *01CT1530
C Y(J) = DLOG(Y(J)) *01CT1540
C 5 X(1,J) = (1./X(1,J)) *01CT1550
C *01CT1560
C 7 DO 10 J = 1, NOB *01CT1570
C FY(J) = B(1)*X(1,J)**B(2) + B(3) *01CT1580
C 10 CONTINUE *01CT1590
C *01CT1600
C IOPEN = 1 *01CT1610
C RETURN *01CT1620
C END *01CT1630
C * *01CT1640
C *******************************************************************01CT1650
C 01CT1660
C --- NVARX AND NOBMAX ARE USED TO DIMENSION SUBSEQUENT SUBROUTINES. 01CT1670
C --- THE MAX NUMBER OF VARIABLES(NVARX) AND THE MAX NUMBER OF 01CT1680
C --- OBSERVATIONS(NOBMAX) ARE DEPENDENT ON THE COMPUTER CORE SIZE 01CT1690
C --- AVAILABLE. HOWEVER, ONE CAN BE TRADED FOR THE OTHER BY THE 01CT1700
C --- FOLLOWING EQUATIONS: (UNITS IN WORDS) 01CT1710
C --- CORE AVAILABLE = (CORE LESS BUFFER - PROGRAM EX VARS. AND OBSVS.) 01CT1720
C --- E.G. 48,100CA = ( 61,300CLB - 13,200PROGRAM EX V AND O) 01CT1730
C --- NOBMAX = (CORE AVAILABLE - 8NVARX - 3(NVARX)SQRD) / (4 + 2NVARX) 01CT1740
C --- E.G.(50VAR,386NOB), (60VAR,296NOB), (70VAR,228NOB), (80VAR,172NOB)01CT1741
C --- 01CT1742
C --- DELZ MUST TOTAL 2756+NOBMAX TO PROVIDE SPACE FOR PLOTS IN PITCHA 01CT1743
C 01CT1744
C * * * * * * * * * * * * * * * * * * * * * * * 01CT1750
C * 01CT1751
C * SUGGESTED OVERLAY CARDS TO BE INCLUDED IN THE LINK STEP 01CT1752
C INSERT DATA01,DATA02,DATA04,MINMAX 01CT1753
C OVERLAY AAA 01CT1754
C INSERT READIN 01CT1755
C OVERLAY AAA 01CT1756
C INSERT GAUSHS,TTEST,EIGENJ,MATINV 01CT1757
C OVERLAY BBB 01CT1758
C INSERT MODEL1 01CT1759
C OVERLAY BBB 01CT1760
C INSERT MODEL2 01CT1761
C OVERLAY BBB 01CT1762
C INSERT MODEL3 01CT1763
C OVERLAY BBB 01CT1764
C INSERT MODEL4 01CT1765
C OVERLAY BBB 01CT1766
C INSERT MODEL5 01CT1767
C OVERLAY AAA 01CT1768
C INSERT SORT 01CT1769
C OVERLAY AAA 01CT1770
C INSERT PITCHA,GRID,PACK,FORCE 01CT1771
C ENTRY MAIN 01CT1772
C * 01CT1773
C * * * * * * * * * * * * * * * * * * * * * * * 01CT1774
C 01CT1780
IMPLICIT REAL*8 (A-H,O-Z) 01CT1790
COMMON /DATA01/ IDENT(170), Y(170), X(20,170), B(20), DIFZ(20), 01CT1800
1 SIGNS(20), F(170), R(170), DELZ(170,20) 01CT1810
C 01CT1820
COMMON /DATA02/ STOPSS, STOPCR, FLAM, FNU, MIT, NC, NEQU, 01CT1830
1 NOMIT, NFOUND 01CT1840
C 01CT1850
COMMON /DATA04/ EQU(216), BI( 40), NPROB(5) 01CT1860
REAL*8 IDENT, JOMIT(14) 01CT1870
EXTERNAL MODEL1, MODEL2, MODEL3, MODEL4, MODEL5 01CT1880
DIMENSION LSORT(1) 01CT1890
EQUIVALENCE (LSORT(1), DELZ(1,1)) 01CT1900
C 01CT1910
C *******************************************************************01CT1920
C * *01CT1930
C * TO CHANGE THE NUMBER OF VARIABLES, COEFFICIENTS AND/OR 01CT1940
C * OBSERVATIONS: 01CT1941
C * 1) REPLACE LABEL COMMON DATA01 AND DATA04 IN MAIN *01CT1950
C * 2) INITIALIZE NVARX, NCMAX AND NOBMAX WHERE: *01CT1960
C * NVARX = MAXIMUM NUMBER OF VARIABLES *01CT1970
C * NCMAX = MAXIMUM NUMBER OF COEFFICIENTS *01CT1971
C * NOBMAX= MAXIMUM NUMBER OF OBSERVATIONS *01CT1980
C * 3) REPLACE DIMENSION STATEMENT IN SUBROUTINE GAUSHS *01CT1990
C * IF NCMAX IS CHANGED. *01CT2000
C * *01CT2010
C * EXAMPLE: NUMBER OF VARIABLES = 10, COEFFICIENTS = 15 AND *01CT2020
C * OBSERVATIONS = 200 *01CT2021
C * *01CT2030
C * REPLACE DATA01 COMMON TO *01CT2040
C COMMON /DATA01/ IDENT(200), Y(200), X(10,200), B(15), DIFZ(15), *01CT2050
C 1 SIGNS(15), F(200), R(200), DELZ(200,15) *01CT2060
C * REPLACE DATA04 COMMON WITH DIMENSION OF BI = 2*NCMAX *01CT2061
C COMMON /DATA04/ EQU(216), BI( 30), NPROB(5) *01CT2062
C * *01CT2070
C * AND REPLACE *01CT2080
NVARX = 20 01CT2090
NCMAX = 20 01CT2091
NOBMAX = 170 01CT2100
C * WITH *01CT2110
C NVARX = 10 *01CT2120
C NCMAX = 15 *01CT2121
C NOBMAX = 200 *01CT2130
C * *01CT2140
C * REPLACE DIMENSION STATEMENT IN SUBROUTINE GAUSHS TO: *01CT2150
C DIMENSION E(15), P(15), PHI(15), Q(15), TB(15), A(15,15), *01CT2160
C 1 D(15,15), U(15,15) *01CT2170
C * *01CT2180
C *******************************************************************01CT2190
C * *01CT2191
C * TO CHANGE THE MAXIMUM NUMBER OF DELETE OBSERVATION CARDS *01CT2192
C * READ AND HENCE THE MAXIMUM NUMBER OF DELETE OBSERVATIONS *01CT2193
C * ( 7 PER CARD): CHANGE MNOMTC, MAXIMUM NUMBER OF DELETE CARDS *01CT2194
C * AND DIMENSION OF JOMIT(MNOMTC*7) IN MAIN. *01CT2195
C * *01CT2196
C *******************************************************************01CT2197
NNPROB = 5 01CT2200
C --- MXNEQU = MAXIMUM NUMBER OF INFORMATION (EQUATION) CARDS. 01CT2201
4 MXNEQU = 12 01CT2202
C --- NEQUNO = DIMENSION OF NEQU. 01CT2203
NEQUNO = MXNEQU*18 01CT2210
C --- MNOMTC = MAXIMUM NUMBER OF DELETE OBSERVATION CARDS. 01CT2211
MNOMTC = 2 01CT2212
C --- MNOMIT = MNOMTC*7 OBSERVATIONS/CARD, 7(A6,4X), IDENT OF 01CT2213
C --- OBSERVATIONS TO BE DELETED, THE DIMENSIONS OF JOMIT. 01CT2214
MNOMIT = MNOMTC*7 01CT2215
C --- NBINO = DIMENSIONS OF BI, THE NAMES OF THE COEFFICIENTS. 01CT2216
NBINO = 2*NCMAX 01CT2220
C --- KTIN = FILE TO READ CONTROL CARDS 01CT2221
KTIN = 5 01CT2222
C --- NFILE = FILE TO READ DATA 01CT2223
C --- NFILE = KTIN UNLESS SPECIFIED ON CONTROL CARD, COLUMN 25-26 01CT2224
C --- KTOU = FILE FOR PRINTOUT OF PLOTS 01CT2225
KTOU = 6 01CT2226
KTINED = 0 01CT2230
100 IERGAU = 0 01CT2240
C 01CT2250
C --- CALL SUBROUTINE READIN TO READ CONTROL CARDS AND DATA. 01CT2260
C 01CT2270
CALL OPEN 01CT2271
200 CALL READIN (KTOU,IDENT, Y, X, EQU, BI, NPROB, B, DIFZ, SIGNS, 01CT2280
1 MODEL, KTINED, KTIN, JOMIT, MNOMIT, NVARX, NOBMAX, NEQUNO, 01CT2290
2 NBINO, NNPROB, NOB, NOIND, NPLOT, NCMAX) 01CT2291
C 01CT2300
IF (KTINED .NE. 0) GO TO 9999 01CT2310
C 01CT2320
C --- DETERMINE WHICH MODEL AND CALL SUBROUTINE GAUSHS. 01CT2330
C 01CT2340
IF (MODEL .GT. 0 .AND. MODEL .LT. 6) GO TO 250 01CT2341
WRITE(KTOU, 240) MODEL 01CT2342
240 FORMAT(1H1,38H***CONTROL CARD ERROR*** MODEL NUMBER ,I2, 01CT2343
1 10H REQUESTED ) 01CT2344
GO TO 200 01CT2345
250 IF (MODEL .EQ. 1) CALL GAUSHS (IDENT, Y, X, EQU, BI, NPROB, B, 01CT2350
1 KTOU, DIFZ, SIGNS, F, R, DELZ, MODEL1, IERGAU, MNOMIT, JOMIT, 01CT2360
2 NVARX, NOBMAX, NEQUNO, NBINO, NNPROB, NOB, NOIND, NPLOT, NCMAX) 01CT2361
IF (MODEL .EQ. 2) CALL GAUSHS (IDENT, Y, X, EQU, BI, NPROB, B, 01CT2370
1 KTOU, DIFZ, SIGNS, F, R, DELZ, MODEL2, IERGAU, MNOMIT, JOMIT, 01CT2380
2 NVARX, NOBMAX, NEQUNO, NBINO, NNPROB, NOB, NOIND, NPLOT, NCMAX) 01CT2381
IF (MODEL .EQ. 3) CALL GAUSHS (IDENT, Y, X, EQU, BI, NPROB, B, 01CT2390
1 KTOU, DIFZ, SIGNS, F, R, DELZ, MODEL3, IERGAU, MNOMIT, JOMIT, 01CT2400
2 NVARX, NOBMAX, NEQUNO, NBINO, NNPROB, NOB, NOIND, NPLOT, NCMAX) 01CT2401
IF (MODEL .EQ. 4) CALL GAUSHS (IDENT, Y, X, EQU, BI, NPROB, B, 01CT2410
1 KTOU, DIFZ, SIGNS, F, R, DELZ, MODEL4, IERGAU, MNOMIT, JOMIT, 01CT2420
2 NVARX, NOBMAX, NEQUNO, NBINO, NNPROB, NOB, NOIND, NPLOT, NCMAX) 01CT2421
IF (MODEL .EQ. 5) CALL GAUSHS (IDENT, Y, X, EQU, BI, NPROB, B, 01CT2430
1 KTOU, DIFZ, SIGNS, F, R, DELZ, MODEL5, IERGAU, MNOMIT, JOMIT, 01CT2440
2 NVARX, NOBMAX, NEQUNO, NBINO, NNPROB, NOB, NOIND, NPLOT, NCMAX) 01CT2441
C 01CT2450
IF (IERGAU .NE. 0) GO TO 100 01CT2460
C 01CT2470
C --- CALL SUBROUTINE SORT TO PRINT AND SORT RESIDUALS IN 01CT2480
C --- CHRONOLOGICAL AND ASCENDING ORDER. 01CT2490
C 01CT2500
CALL SORT (IDENT, Y, NPROB, F, R, DELZ, YCMIN, YCMAX, NOBMAX, 01CT2510
1 NNPROB, NOB, KTOU) 01CT2511
C 01CT2520
C --- CALL SUBROUTINE PITCHA TO PLOT RESIDUALS. 01CT2530
C 01CT2540
CALL PITCHA (X, EQU, BI, F, R, DELZ, NPROB, YCMIN, YCMAX, 01CT2550
1 LSORT(NOBMAX+1), LSORT(NOBMAX+1379), KTOU, 01CT2560
2 NVARX, NOBMAX, NEQUNO, NBINO, NNPROB, NOB, NOIND, NPLOT) 01CT2561
C 01CT2570
C CALL OPTIONAL OUTPUT SUBROUTINE 01CT2571
C 01CT2572
CALL OUTPUT (IDENT,Y,X,F,B,NOB,NOIND,NC,NOBMAX,NVARX,NCMAX,KTOU) 01CT2573
C 01CT2580
TYPE 9000 01CT2581
9000 FORMAT(//1H0,' *** PRINT OUTPUT FILE FOR COMPLETE INFORMATION *** 01CT2582
1 '////) 01CT2583
WRITE(KTOU, 300) NPROB 01CT2584
300 FORMAT(1H1,18HEND OF PROBLEM ,5A4) 01CT2590
GO TO 200 01CT2600
C 01CT2610
9999 STOP 01CT2620
END 01CT2630
SUBROUTINE GAUSHS (IDENT, Y, X, EQU, BI, NPROB, TH, KTOU, DIFZ, 03GH0010
1 SIGNS, F, R, DELZ, MODEL, IERGAU, MNOMIT, JOMIT, 03GH0020
2 NVARX, NOBMAX, NEQUNO, NBINO, NNPROB, NOB, NOIND, NPLOT, NCMAX) 03GH0021
IMPLICIT REAL*8(A-H,O-Z) 03GH0030
COMMON /DATA02/ STOPSS, STOPCR, FLAM, FNU, MIT, NC, NEQU, 03GH0040
1 NOMIT, NFOUND 03GH0050
C 03GH0060
REAL*8 IDENT, JOMIT(MNOMIT) 03GH0070
DIMENSION IDENT(NOBMAX), Y(NOBMAX), X(NVARX,NOBMAX), EQU(NEQUNO), 03GH0080
1 BI(NBINO), NPROB(NNPROB), TH(NCMAX), DIFZ(NCMAX), 03GH0090
2 SIGNS(NCMAX), F(NOBMAX), R(NOBMAX), DELZ(NOBMAX,NCMAX) 03GH0100
C *******************************************************************03GH0110
C * *03GH0120
C * REPLACE THE FOLLOWING DIMENSION STATEMENT WHEN THE MAX NUMBER *03GH0130
C * OF COEFFICIENTS (NCMAX) IS CHANGED. *03GH0140
C * *03GH0150
C *******************************************************************03GH0160
DIMENSION E(20), P(20), PHI(20), Q(20), TB(20), A(20,20), 03GH0170
1 D(20,20), U(20,20) 03GH0180
C 03GH0190
C --- NCMAX DIMENSIONS SUBROUTINES EIGENJ AND MATINV IN THE ARGUMENTS 03GH0200
C --- OF THEIR CALL STATEMENTS. 03GH0210
NP = NC 03GH0220
TYPE 3999 03GH0221
3999 FORMAT(//30H0NONLINWOOD - DEC VERSION 1979/17H0NONLINEAR LEAST-, 03GH0222
1 29HSQUARES CURVE-FITTING PROGRAM //) 03GH0223
TYPE 3998,NPROB,NOB, NP, FLAM, FNU, MIT 03GH0224
3998 FORMAT(31H NONLINEAR ESTIMATION, , 5A4/23H NUMBER OF OBS03GH0225
1ERVATIONS, I5/23H NUMBER OF COEFFICIENTS, I5/16H STARTING LAMBDA, 03GH0226
2 F16.3/15H STARTING NU , F17.3/22H MAX NO. OF ITERATIONS, I6// )03GH0227
WRITE(KTOU, 1000)NPROB,NOB,NP,FLAM,FNU,MIT 03GH0230
1000 FORMAT(31H1NONLINEAR ESTIMATION, , 5A4/23H NUMBER OF OBS03GH0240
1ERVATIONS, I5/23H NUMBER OF COEFFICIENTS, I5/16H STARTING LAMBDA, 03GH0250
2 F16.3/15H STARTING NU , F17.3/22H MAX NO. OF ITERATIONS, I6// )03GH0260
TYPE 1001 03GH0261
WRITE(KTOU, 1001) 03GH0270
1001 FORMAT(35H0INITIAL VALUES OF THE COEFFICIENTS ) 03GH0280
TYPE 4000, (I,I=1,NP) 03GH0281
4000 FORMAT(8(4X,I2,6X)) 03GH0282
WRITE(KTOU, 2000)(I,I=1,NP) 03GH0290
2000 FORMAT(10(4X,I2,6X)) 03GH0300
TYPE 4001, (TH(I),I=1,NP) 03GH0301
4001 FORMAT(1H ,1P6E12.5) 03GH0302
WRITE(KTOU, 2001)(TH(I),I=1,NP) 03GH0310
2001 FORMAT(1H0,1P10E12.5) 03GH0320
WRITE(KTOU, 1002 ) 03GH0330
1002 FORMAT(53H0PROPORTIONS USED IN CALCULATING DIFFERENCE QUOTIENTS ) 03GH0340
WRITE(KTOU, 2000)(I,I=1,NP) 03GH0350
WRITE(KTOU, 2001)(DIFZ(I),I=1,NP) 03GH0360
IF(NOIND - NVARX) 14,14,991 03GH0361
14 IF(NP-NCMAX)15,15,992 03GH0370
15 IF(NP-2)993,16,16 03GH0380
16 GA=FLAM 03GH0390
NIT=1 03GH0400
ASSIGN 225 TO IRAN 03GH0410
ASSIGN 265 TO JORDAN 03GH0420
ASSIGN 180 TO KUWAIT 03GH0430
DELT=1.0E-08*FLOAT(NP*NP/2) 03GH0440
IF(NOB-NOBMAX)18,18,994 03GH0450
18 IF(NOB-NP)995,20,20 03GH0460
20 IF(MIT-100)10,10,996 03GH0470
10 IF(STOPCR)997,40,30 03GH0480
40 IF(STOPSS)997,60,50 03GH0490
60 ASSIGN 270 TO IRAN 03GH0500
GO TO 70 03GH0510
50 ASSIGN 265 TO IRAN 03GH0520
GO TO 70 03GH0530
30 IF(STOPSS)997,80,70 03GH0540
80 ASSIGN 270 TO JORDAN 03GH0550
70 SSQ=0 03GH0560
CALL MODEL(NPROB, TH, F, NOB, NP, X, NVARX, NOBMAX, NCMAX, KTOU) 03GH0570
DO 90 I=1,NOB 03GH0580
R(I)=Y(I)-F(I) 03GH0590
90 SSQ=SSQ+R(I)*R(I) 03GH0600
TYPE 1003, SSQ 03GH0601
WRITE(KTOU, 1003)SSQ 03GH0610
1003 FORMAT(24H0INITIAL SUM OF SQUARES:, 1PE12.4) 03GH0620
C --- BEGIN ITERATION 03GH0630
100 WRITE(KTOU, 1004)NIT 03GH0640
TYPE 1004, NIT 03GH0641
1004 FORMAT(///35X,13HITERATION NO., I4) 03GH0650
GA=GA/FNU 03GH0660
DO 130 J=1,NP 03GH0670
TEMP=TH(J) 03GH0680
TH(J)=TH(J)+DIFZ(J)*TH(J) 03GH0690
Q(J)=0 03GH0700
CALL MODEL(NPROB,TH,DELZ(1,J),NOB,NP,X,NVARX,NOBMAX, NCMAX, KTOU) 03GH0710
DO 120 I=1,NOB 03GH0720
DELZ(I,J)=DELZ(I,J)-F(I) 03GH0730
120 Q(J)=Q(J)+DELZ(I,J)*R(I) 03GH0740
Q(J)=Q(J)/(DIFZ(J)*TH(J)) 03GH0750
C --- Q=XT*R (STEEPEST DESCENT) 03GH0760
130 TH(J)=TEMP 03GH0770
DO 150 I=1,NP 03GH0780
DO 151 J=1,I 03GH0790
SUM=0 03GH0800
DO 160 K=1,NOB 03GH0810
160 SUM=SUM+DELZ(K,I)*DELZ(K,J) 03GH0820
TEMP =SUM/(DIFZ(I)*TH(I)*DIFZ(J)*TH(J)) 03GH0830
C --- D=XT*X (MOMENT MATRIX) 03GH0840
D(J,I)=TEMP 03GH0850
151 D(I,J)=TEMP 03GH0860
150 E(I)=DSQRT(D(I,I)) 03GH0870
GO TO KUWAIT,(225,265,180,270,666) 03GH0880
C --- -ITERATION 1 ONLY- 03GH0890
180 DO 200 I=1,NP 03GH0900
DO 200 J=1,I 03GH0910
SUM =D(I,J) 03GH0920
A(J,I)=SUM 03GH0930
200 A(I,J)=SUM 03GH0940
C --- KOK AND LOL ARE ALTERNATE DIMENSIONS AMD LIMIT VALUES OF 03GH0950
C --- THE MATRIX INVERSION SUBROUTINE MATINV. 03GH0960
KOK=1 03GH0970
LOL=0 03GH0980
CALL EIGENJ(A,U,DELT,NP,NCMAX) 03GH0990
TYPE 1006 03GH0991
WRITE(KTOU, 1006 ) 03GH1000
1006 FORMAT(52H0EIGENVALUES OF MOMENT MATRIX - PRELIMINARY ANALYSIS ) 03GH1010
TYPE 4001, (A(I,I),I=1,NP) 03GH1011
WRITE(KTOU, 2001)(A(I,I),I=1,NP) 03GH1020
ASSIGN 666 TO KUWAIT 03GH1030
C --- -END ITERATION 1- 03GH1040
666 DO 153 I=1,NP 03GH1050
DO 153 J=1,I 03GH1060
C --- A= SCALED MOMENT MATRIX 03GH1070
A(I,J)=D(I,J)/(E(I)*E(J)) 03GH1080
153 A(J,I)=A(I,J) 03GH1090
DO 155 I=1,NP 03GH1100
P(I)=Q(I)/E(I) 03GH1110
PHI(I)=P(I) 03GH1120
155 A(I,I)=A(I,I)+GA 03GH1130
CALL MATINV(A,NP,P,KOK,DET,NCMAX) 03GH1140
C --- P/E = CORRECTION VECTOR 03GH1150
WRITE(KTOU, 1005)DET 03GH1160
1005 FORMAT(13H0DETERMINANT:, 1PE12.4) 03GH1170
STEP=1.0 03GH1180
170 DO 220 I=1,NP 03GH1190
220 TB(I)=P(I)*STEP/E(I)+TH(I) 03GH1200
DO 401 I=1,NP 03GH1210
IF(SIGNS(I))998, 401, 402 03GH1220
402 IF(TH(I)*TB(I))403,403,401 03GH1230
401 CONTINUE 03GH1240
SUMB=0 03GH1250
CALL MODEL(NPROB, TB, F, NOB, NP, X, NVARX, NOBMAX, NCMAX, KTOU) 03GH1260
DO 230 I=1,NOB 03GH1270
R(I)=Y(I)-F(I) 03GH1280
230 SUMB=SUMB+R(I)*R(I) 03GH1290
403 SUM1=0.0 03GH1300
SUM2=0.0 03GH1310
SUM3=0.0 03GH1320
DO 231 I=1,NP 03GH1330
SUM1=SUM1+P(I)*PHI(I) 03GH1340
SUM2=SUM2+P(I)*P(I) 03GH1350
231 SUM3=SUM3+PHI(I)*PHI(I) 03GH1360
ANGLE=57.2957795*DARCOS(SUM1/DSQRT(SUM2*SUM3)) 03GH1370
C --- PRINT ANGLE IN SCALED COORDINATES 03GH1380
WRITE(KTOU, 1041)ANGLE 03GH1390
1041 FORMAT(25H0ANGLE IN SCALED. COORD,=, F5.2, 8H DEGREES ) 03GH1400
DO 2401 I=1,NP 03GH1410
IF(SIGNS(I))998,2401,2402 03GH1420
2402 IF(TH(I)*TB(I))663,663,2401 03GH1430
2401 CONTINUE 03GH1440
IF(SUMB/SSQ-1.0)662,662,663 03GH1450
663 IF(ANGLE-30.0)665,665,664 03GH1460
665 STEP=STEP/2.0 03GH1470
GO TO 170 03GH1480
664 GA=GA*FNU 03GH1490
GO TO 666 03GH1500
C --- PRINT COEFFICIENTS VIA FIT 03GH1510
662 WRITE(KTOU, 1007) 03GH1520
TYPE 1007 03GH1521
1007 FORMAT(23H0VALUES OF COEFFICIENTS ) 03GH1530
DO 669 I=1,NP 03GH1540
669 TH(I)=TB(I) 03GH1550
TYPE 4000,(I,I=1,NP) 03GH1551
WRITE(KTOU, 2000)(I,I=1,NP) 03GH1560
TYPE 4001, (TH(I),I=1,NP) 03GH1561
WRITE(KTOU, 2006)(TH(I),I=1,NP) 03GH1570
2006 FORMAT(1H , 1P10E12.5) 03GH1580
TYPE 4040, SUMB 03GH1581
4040 FORMAT(16H0SUM OF SQUARES:, 1PE12.4) 03GH1582
WRITE(KTOU, 1040)GA,SUMB 03GH1590
1040 FORMAT(8H0LAMBDA:,1PE10.3, 20X,27HSUM OF SQUARES AFTER LEAST-, 03GH1600
1 12HSQUARES FIT:, 1PE12.4) 03GH1610
GO TO IRAN,(225,265,180,270,666) 03GH1620
225 DO 240 I=1,NP 03GH1630
IF(DABS(P(I)*STEP/E(I))/(1.0E-20+DABS(TH(I)))-STOPCR)240,240,250 03GH1640
C --- ITERATION STOPS---RELATIVE CHANGE IN EACH COEFFICIENT. 03GH1650
240 CONTINUE 03GH1660
TYPE 1009, STOPCR 03GH1661
WRITE(KTOU, 1009)STOPCR 03GH1670
1009 FORMAT(54H0ITERATION STOPS - RELATIVE CHANGE IN EACH COEFFICIENT, 03GH1680
1 11H LESS THAN:, 1PE12.4) 03GH1690
GO TO 280 03GH1700
250 GO TO JORDAN,(225,265,180,270,666) 03GH1710
265 IF(SSQ-SUMB-STOPSS)260,260,270 03GH1720
C --- ITERATION STOPS---RELATIVE CHANGE IN SUM OF SQUARES. 03GH1730
260 WRITE(KTOU, 1010)STOPSS 03GH1740
TYPE 1010, STOPSS 03GH1741
1010 FORMAT(63H0ITERATION STOPS ---------- CHANGE IN SUM OF SQUARES LES03GH1750
1S THAN:, 1PE12.4) 03GH1760
GO TO 280 03GH1770
270 SSQ=SUMB 03GH1780
NIT=NIT+1 03GH1790
IF(NIT-MIT)100,100,279 03GH1800
C --- END ITERATION 03GH1810
279 TYPE 4011, MIT 03GH1811
4011 FORMAT(40H0NUMBER OF ITERATIONS EXCEEDS MAXIMUM OF,I4) 03GH1812
280 SSQ=SUMB 03GH1820
IDF=NOB-NP 03GH1830
C --- PRINT CORRELATION MATRIX 03GH1840
TYPE 1015 03GH1841
WRITE(KTOU, 1015 ) 03GH1850
1015 FORMAT(19H0CORRELATION MATRIX ) 03GH1860
CALL MATINV(D,NP,P,LOL,DET,NCMAX) 03GH1870
TYPE 1005, DET 03GH1871
WRITE(KTOU, 1005)DET 03GH1880
DO 7692 I=1,NP 03GH1890
7692 E(I)=DSQRT(D(I,I)) 03GH1900
TYPE 4005, (I,I=1,NP) 03GH1901
4005 FORMAT(3X,7(4X,I2,5X)) 03GH1902
WRITE(KTOU, 2005)(I,I=1,NP) 03GH1910
2005 FORMAT(3X,10(4X,I2,5X)) 03GH1920
DO 390 I=1,NP 03GH1930
DO 340 J=I,NP 03GH1940
A(J,I)=D(J,I)/(E(I)*E(J)) 03GH1950
D(J,I)=D(J,I)/(DIFZ(I)*TH(I)*DIFZ(J)*TH(J)) 03GH1960
D(I,J)=D(J,I) 03GH1970
340 A(I,J)=A(J,I) 03GH1980
TYPE 4009, I,(A(J,I),J=1,I) 03GH1981
4009 FORMAT(I3,7(2X,F7.4,2X)) 03GH1982
390 WRITE(KTOU, 2009)I,(A(J,I),J=1,I) 03GH1990
2009 FORMAT(I3,10(2X,F7.4,2X)) 03GH2000
IF(IDF)995,410,7058 03GH2010
7058 RMS = SSQ/FLOAT(IDF) 03GH2020
SDEV = DSQRT(RMS) 03GH2030
YYMIN = 1E32 03GH2040
YYMAX = -YYMIN 03GH2050
DO 500 I = 1,NOB 03GH2060
CALL MINMAX(YYMIN, YYMAX, Y(I) ) 03GH2070
500 CONTINUE 03GH2080
YW = YYMAX - YYMIN 03GH2090
WRITE(KTOU, 1050) NPROB, YYMIN, YYMAX, YW 03GH2100
1050 FORMAT(1H1,28X,45HNONLINEAR LEAST-SQUARES CURVE-FITTING PROGRAM// 03GH2110
1 1X, 5A4, 2X, 9HDEP.VAR.:, 1X, 7HMIN Y =, 1PE10.3, 03GH2120
2 2X, 8HMAX Y = , 1PE10.3, 2X,10HRANGE Y = , 1PE10.3 / ) 03GH2130
IF(NEQU.EQ.0) GO TO 502 03GH2140
WRITE(KTOU, 1051) (EQU(I), I=1,NEQU ) 03GH2150
1051 FORMAT(1H , 18X, 18A4 ) 03GH2160
502 IF(NOMIT.EQ.0) GO TO 944 03GH2161
IF(NFOUND.EQ.0) GO TO 909 03GH2162
WRITE(KTOU, 907) (JOMIT(JZ),JZ=1,NFOUND) 03GH2163
907 FORMAT(19X,22HOBSERVATIONS DELETED: ,7(A6,2X),7(/41X,7(A6,2X))) 03GH2164
IF((NOMIT-NFOUND).EQ.0) GO TO 944 03GH2165
J = NFOUND + 1 03GH2166
909 WRITE(KTOU, 910) (JOMIT(JZ),JZ=J,NOMIT) 03GH2167
910 FORMAT(19X,24HOBSERVATIONS NOT FOUND: ,7(A6,2X),7(/43X,7(A6,2X))) 03GH2168
944 WRITE(KTOU, 1052 ) 03GH2170
1052 FORMAT(1H0, 62X,21H95% CONFIDENCE LIMITS / 03GH2180
1 1X,10HIND.VAR(I), 3X, 4HNAME, 5X, 9HCOEF.B(I), 6X,10HS.E. COEF , 03GH2190
2 4X, 7HT-VALUE, 4X,22HLOWER UPPER ) 03GH2200
TVAR=TTEST(IDF) 03GH2210
DO 550 I = 1,NP 03GH2220
SECOEF= E(I)*SDEV 03GH2230
TVALUE= TH(I)/SECOEF 03GH2240
TSEC = TVAR*SECOEF 03GH2250
TMCOE = TH(I) - TSEC 03GH2260
TPCOE = TH(I) + TSEC 03GH2270
K = 2*I 03GH2280
J = K - 1 03GH2290
WRITE(KTOU, 2010) I, BI(J), BI(K), TH(I), SECOEF, TVALUE, TMCOE, 03GH2300
1 TPCOE 03GH2310
2010 FORMAT(1H , 4X, I2, 6X, A4, A2, 2X, 1PE12.5, 5X, 1PE9.2, 4X, 03GH2320
1 0PF6.1, 5X, 1PE9.2, 5X, 1PE9.2) 03GH2330
550 CONTINUE 03GH2340
WRITE(KTOU, 1054) NOB 03GH2350
1054 FORMAT(20H0NO. OF OBSERVATIONS, 11X, I5) 03GH2360
WRITE(KTOU, 1056) NP 03GH2370
1056 FORMAT(20H NO. OF COEFFICIENTS, 11X, I5) 03GH2380
NDFR = IDF + 0.01 03GH2390
WRITE(KTOU, 1058) NDFR 03GH2400
1058 FORMAT(28H RESIDUAL DEGREES OF FREEDOM, 4X, I4) 03GH2410
WRITE(KTOU, 1062) SDEV 03GH2420
1062 FORMAT(26H RESIDUAL ROOT MEAN SQUARE, 3X, F16.8) 03GH2430
WRITE(KTOU, 1064) RMS 03GH2440
1064 FORMAT(21H RESIDUAL MEAN SQUARE, 8X, F16.8) 03GH2450
WRITE(KTOU, 1066) SSQ 03GH2460
1066 FORMAT(24H RESIDUAL SUM OF SQUARES, 5X, F16.8) 03GH2470
GO TO 99999 03GH2480
410 WRITE(KTOU, 1033)NPROB 03GH2490
1033 FORMAT(1H1,18HEND OF PROBLEM ,5A4) 03GH2500
GO TO 88888 03GH2510
991 WRITE(KTOU, 3034) NVARX 03GH2511
3034 FORMAT(1H0,11H***ERROR***/32H0EXCESSIVE NUMBER OF VARIABLES. , 03GH2512
1 36H PROGRAM DIMENSIONED FOR MAXIMUM OF , I3 ) 03GH2513
GO TO 410 03GH2514
992 WRITE(KTOU, 3035) NCMAX 03GH2520
3035 FORMAT(1H0,11H***ERROR***/35H0EXCESSIVE NUMBER OF COEFFICIENTS. , 03GH2530
1 36H PROGRAM DIMENSIONED FOR MAXIMUM OF , I3 ) 03GH2540
GO TO 410 03GH2550
993 WRITE(KTOU, 3036 ) 03GH2560
3036 FORMAT(1H0,11H***ERROR***/26H0LESS THAN 2 COEFFICIENTS. ) 03GH2570
GO TO 410 03GH2580
994 WRITE(KTOU, 3037) NOBMAX 03GH2590
3037 FORMAT(1H0,11H***ERROR***/35H0EXCESSIVE NUMBER OF OBSERVATIONS. , 03GH2600
1 36H PROGRAM DIMENSIONED FOR MAXIMUM OF , I4 ) 03GH2610
GO TO 410 03GH2620
995 WRITE(KTOU, 3038 ) 03GH2630
3038 FORMAT(1H0,11H***ERROR***/55H0NUMBER OF COEFFICIENTS EXCEEDS NUMBE03GH2640
1R OF OBSREVATIONS. ) 03GH2650
GO TO 410 03GH2660
996 WRITE(KTOU, 3039 ) 03GH2670
3039 FORMAT(1H0,11H***ERROR***/33H0EXCESSIVE NUMBER OF ITERATIONS. , 03GH2680
1 44H PROGRAM LIMIT SWITCH SET FOR MAXIMUM OF 100 ) 03GH2690
GO TO 410 03GH2700
997 WRITE(KTOU, 3040) STOPSS, STOPCR 03GH2710
3040 FORMAT(1H0,11H***ERROR***/36H0STOP CRITERIA IS NEGATIVE. STOPSS =,03GH2720
1 F12.7,10H, STOPRC =, F12.7 ) 03GH2730
GO TO 410 03GH2740
998 WRITE(KTOU, 3041) I 03GH2750
3041 FORMAT(1H0,11H***ERROR***/12H0COEFFICIENT ,I4,18H HAS NEGATIVE SIG03GH2760
1N ) 03GH2770
GO TO 410 03GH2780
88888 IERGAU = 1 03GH2790
99999 RETURN 03GH2800
END 03GH2810