SUBROUTINE MRQCOF(X,Y,SIG,NDATA,A,MA,LISTA,MFIT,ALPHA,BETA, * NALP,CHISQ,FUNCS) * * Module number: FOS/HRS UTILITY * * Module name: mrqcof * * Keyphrase: * ---------- * non-linear least squares fit. * Description: * ------------ * Numercial Recipe routine. * This routine is called by routine MRQMIN to evaluate the * linearized fitting matrix ALPHA and vector BETA. * * FORTRAN name: mrqcof * * Keywords of accessed files and tables: * -------------------------------------- * none * * Subroutines Called: * ------------------- * Others: * funcs (input subroutine to program used to evaluate the non-linear * function) * * History: * -------- * Version Date Author Description * 1 Aug 87 D. Lindler Conversion of Numerical Recipe Routine *------------------------------------------------------------------------------- C C INPUT PARAMETERS C C X,Y,SIG - VECTORS OF X,Y AND SIGMAS (REAL*8) C NDATA - LENGTH OF X,Y,SIG (INTEGER) C A - VECTOR OF COEFFICIENTS C MA - DIMENSION OF A C LISTA - LIST OF COEF. NUMBERS TO FIT (INTEGER) C MFIT - NUMBER OF COEF. TO FIT C NALP - DIMENSIONS OF OUTPUT MATRIX ALPHA (INTEGER) C FUNCS - NAME OF THE FUNCTION SUBROUTINE C C OUTPUT PARAMETERS C C ALPHA - OUTPUT CURVATURE MATRIX (REAL*8) C BETA - BETA VECTOR OF LENGTH MA (REAL*8) C CHISQ - CHI SQUARED (REAL*8) C C--------------------------------------------------------------------- DOUBLE PRECISION X,Y,SIG,ALPHA,BETA,DYDA,A,SIG2I,YMOD,CHISQ,WT INTEGER LISTA,NDATA,MA,MFIT,NALP,J,K,I DIMENSION X(NDATA),Y(NDATA),SIG(NDATA),ALPHA(NALP,NALP), * BETA(MA),DYDA(100),LISTA(MFIT),A(MA) DOUBLE PRECISION DY EXTERNAL FUNCS DO 12 J=1,MFIT DO 11 K=1,J ALPHA(J,K)=0. 11 CONTINUE BETA(J)=0. 12 CONTINUE CHISQ=0. DO 15 I=1,NDATA CALL FUNCS(X(I),A,YMOD,DYDA,MA) SIG2I=1./(SIG(I)*SIG(I)) DY=Y(I)-YMOD DO 14 J=1,MFIT WT=DYDA(LISTA(J))*SIG2I DO 13 K=1,J ALPHA(J,K)=ALPHA(J,K)+WT*DYDA(LISTA(K)) 13 CONTINUE BETA(J)=BETA(J)+DY*WT 14 CONTINUE CHISQ=CHISQ+DY*DY*SIG2I 15 CONTINUE DO 17 J=2,MFIT DO 16 K=1,J-1 ALPHA(K,J)=ALPHA(J,K) 16 CONTINUE 17 CONTINUE RETURN END