cc PROGRAM ESTIM ************************************************************************ * * * General driver program for the subroutine MMRQT (multiple fit) * * * ************************************************************************ * IMPLICIT DOUBLE PRECISION (D) REAL*8 P0,W DIMENSION DT(50,1),DV(50,1),P0(15),W(3,3),AC(10) CHARACTER NAME*40,SHT*40 ******************************************************* OPEN(7,FILE='ezaz.dat') ******************************************************* READ(7,100)NAME READ(7,100)SHT 100 FORMAT(A40) WRITE(*,150)NAME 150 FORMAT(1X,/,/,1X,A40,/) * READ(7,200)NM,NX,NY,NP,MW,MD,NSTEP,DSTEP 200 FORMAT(7I5,E10.5) WRITE(*,200) NM,NX,NY,NP,MW,MD,NSTEP,DSTEP * READ(7,100)SHT READ(7,*)(P0(I),I=1,NP) READ(7,100)SHT * WRITE(*,230) NAME 230 FORMAT(1X,A40) * DO 500 I=1,NM READ(7,*)DT(I,1),DV(I,1) CCCC WRITE(*,400)DT(I,1),DV(I,1) 400 FORMAT(2X,F5.2,2X,F7.5) * CCCC DV(I,1)=DV(I,1)*S0 CCCC WRITE(*,450) DT(I,1),DV(I,1) 450 FORMAT(3X,F5.2,2X,F7.3) * 500 CONTINUE * IF(MW.EQ.2)THEN DO 600 I=1,NY 600 READ(7,*)(W(I,J),J=1,NY) ENDIF * CALL MMRQT(NAME,NM,NX,NY,NP,MW,MD,P0,DT,DV,NSTEP,DSTEP,W,AC,IC) * STOP END * SUBROUTINE MODEL(NX,NY,NP,X,Y,P,AC,IC) DOUBLE PRECISION X,Y,P,T,C0,K DIMENSION X(NX),Y(NY),P(NP),AC(10) * ************************************************************************ * * T = X(1) * * Y(1) = P(1) + P(2)*T * * ************************************************************************ * RETURN END * SUBROUTINE USERW(M,NM,NX,NY,NP,DT,DV,W,DWS,P,AC,IC) IMPLICIT DOUBLE PRECISION (D) DOUBLE PRECISION P,W DIMENSION DT(NM,NX),DV(NM,NY),W(NY,NY),P(NP),AC(10) * IF(M.LE.14) W(1,1)=DWS/.3 IF(M.GT.14) W(1,1)=DWS/1.5 CCCCC W(1,1) = DWS / .7 * RETURN END * SUBROUTINE DERJACOBI(NX,NY,NP,X,Y,DG,P,AC,IC) ************************************************************************ * Calculates the Jacobian matrix of the derivatives dYi/dPj. * * If you wish to use analytical derivatives, put flag DM = 1 in * * the driver program of MMRQT and write this subprogram to evaluate * * the Jacobian matrix DG(i,j) = dY(i)/dP(j). * ************************************************************************ IMPLICIT DOUBLE PRECISION (D) DOUBLE PRECISION X,Y,P DIMENSION X(NX),DG(15,15),P(NP),Y(NY),AC(10) C *** Write here the evaluation of DG ********************************* * * PARAMETER(R=.008314) DXP2 = DEXP(-P(2)/(R*X(1))) DXP4 = DEXP(-P(4)/(R*X(1))) DEN = 1.D0 + DXP4 * DG(1,1) = 2.D0 * DXP2 / DEN DG(1,2) = -2.D0 * P(1) * DXP2 / DEN /R*X(1)/(R*X(1)) DG(1,3) = -2.D0 * P(1)*DXP2*DXP4 / DEN/DEN DG(1,4) = 2.D0 * P(1)*P(3)*DXP2*DXP4 /DEN/DEN/(R*X(1)) DG(1,3) = -2.D0 DG(1,4) = 2.D0 * * ************************************************************************ CCCCC write(*,*)(dg(1,j),j=1,4) RETURN END