]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MINICERN/mathlib/gen/d/dmaxlk.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / MINICERN / mathlib / gen / d / dmaxlk.F
diff --git a/MINICERN/mathlib/gen/d/dmaxlk.F b/MINICERN/mathlib/gen/d/dmaxlk.F
new file mode 100644 (file)
index 0000000..f56c943
--- /dev/null
@@ -0,0 +1,121 @@
+*
+* $Id$
+*
+* $Log$
+* Revision 1.1.1.1  1996/04/01 15:02:20  mclareni
+* Mathlib gen
+*
+*
+#include "gen/pilot.h"
+      SUBROUTINE DMAXLK(SUB,K,M,N,NX,X,A,AL,AU,MODE,EPS,MAXIT,IPRT,
+     +                  MFR,IAFR,PHI,DPHI,W,NERROR)
+
+#include "gen/imp64.inc"
+      DIMENSION AL(*),AU(*),A(*),DPHI(*),IAFR(*),X(*),W(*)
+      EXTERNAL SUB
+
+***********************************************************************
+*   LEAMAX, VERSION: 15.03.1993
+***********************************************************************
+*
+*   DMAXLK IS THE STEERING ROUTINE FOR MAXIMUM LIKELIHOOD ESTIMATION.
+*
+*   SUBROUTINE CALLED:    D501L2
+*
+*
+*   THE CONSTANTS, VARIABLES AND ARRAYS HAVE THE FOLLOWING MEANING.
+*
+*   SUB    NAME OF USER-SUPPLIED SUBROUTINE SUBPROGRAM, DECLARED
+*          EXTERNAL IN THE CALLING PROGRAM. THIS SUBPROGRAM MUST PROVIDE
+*          THE VALUES OF THE FUNCTION AND, IF MODE=1, THE VALUES OF THE
+*          DERIVATIVES (SEE EXAMPLE) .
+*   K      (INTEGER) DIMENSION OF A SINGLE DATA POINT (OBSERVATION) X .
+*   M      (INTEGER) NUMBER OF DATA POINTS (OBSERVATIONS).
+*   N      (INTEGER) NUMBER OF UNKNOWN PARAMETERS A.
+*   NX     (INTEGER) DECLARED FIRST DIMENSION OF ARRAY  X  IN THE
+*          CALLING PROGRAM, WITH  NX .GE. K .
+*   X      (DOUBLE PRECISION) TWO-DIMENSIONAL ARRAY OF DIMENSION (NX,M).
+*          ON ENTRY, X MUST CONTAIN THE DATA SET  (X(I)) (THE I-TH
+*          COLUMN OF X BELONGS TO THE DATA POINT X(I), I=1,...,M).
+*   A      (DOUBLE PRECISION) ONE-DIMENSIONAL ARRAY OF LENGTH  N .
+*          ON ENTRY, A  MUST CONTAIN THE STARTING VALUES OF THE UNKNOWN
+*          PARAMETERS FOR THE LEVENBERG-MARQUARDT ALGORITHM.
+*          ON EXIT, A  CONTAINS AN APPROXIMATION OF THE MINIMUM POINT.
+*   AL     (DOUBLE PRECISION) ONE-DIMENSIONAL ARRAY OF LENGTH  N .
+*          ON ENTRY, AL  MUST CONTAIN THE LOWER BOUNDS OF  A .
+*   AU     (DOUBLE PRECISION) ONE-DIMENSIONAL ARRAY OF LENGTH  N .
+*          ON ENTRY, AU  MUST CONTAIN THE UPPER BOUNDS OF  A .
+*   MODE   (INTEGER)
+*          = 0: THE DERIVATIVE IS COMPUTED NUMERICALLY.
+*          = 1: THE DERIVATIVE HAS TO BE EVALUATED IN SUBPROGRAM  SUB .
+*   EPS    (DOUBLE PRECISION) USER-SUPPLIED TOLERANCE USED TO CONTROL
+*          THE TERMINATION CRITERION. EPS SHOULD BE CHOSEN ACCORDING
+*          TO THE ACCURACY REQUIRED BY THE UNDERLYING PROBLEM AND TO
+*          THE MACHINE ACCURACY ALSO (RECOMMENDED VALUE ON ENTRY:
+*          1D-6 ... 1D-12 ).
+*   MAXIT  (INTEGER) MAXIMUM PERMITTED NUMBER OF ITERATIONS.
+*   IPRT   (INTEGER) PRINTING CONTROL.                                  G
+*          = 0     : NO PRINTING OF INTERMEDIATE RESULTS
+*          = +/- L : PRINTING OF INTERMEDIATE RESULTS AT EVERY ABS(L)-TH
+*                    ITERATION; IF  IPRT < 0, PRINTING OF ALL INPUT
+*                    PARAMETERS OF DSUMSQ IN ADDITION.
+*   MFR    (INTEGER) ON EXIT, MFR CONTAINS THE NUMBER OF FREE VARIABLES
+*          AT THE SOLUTION POINT.
+*   IAFR   (INTEGER) ONE-DIMENSIONAL ARRAY OF LENGTH  >= N , USED AS
+*          WORKING SPACE. ON EXIT, THE FIRST  MFR  ELEMENTS OF  IAFR
+*          CONTAIN THE INDICES OF THE FREE VARIABLES AT THE SOLUTION
+*          POINT.
+*   PHI    (DOUBLE PRECISION) ON EXIT, PHI  CONTAINS THE VALUE OF THE
+*          OBJECTIVE FUNCTION AT THE MINIMUM POINT.
+*   DPHI   (DOUBLE PRECISION) ONE-DIMENSIONAL ARRAY OF LENGTH  N .
+*          ON EXIT, DPHI  CONTAINS THE DERIVATIVES OF THE OBJECTIVE
+*          FUNCTION WITH RESPECT TO A (THE GRADIENT) AT THE LAST
+*          ITERATION POINT.
+*   W      (DOUBLE PRECISION) ONE-DIMENSIONAL ARRAY OF LENGTH
+*          7*N+2*N*N , USED AS WORKING SPACE.
+*   NERROR (INTEGER) ERROR INDICATOR. ON EXIT:
+*           = 0: NO ERROR OR WARNING DETECTED.
+*           = 1: AT LEAST ONE OF THE CONSTANTS K, M, N, NX, MAXIT IS
+*                ILLEGAL OR AT LEAST FOR ONE J THE RELATION
+*                AL(J) .LE. AU(J)  IS NOT TRUE.
+*           = 2: THE MAXIMUM NUMBER  MAXIT  OF ITERATIONS HAS BEEN
+*                REACHED.
+*           = 3: THE OBJECTIVE FUNCTION  PHI  OR ITS DERIVATIVE IS NOT
+*                DEFINED FOR THE CURRENT VALUES OF THE UNKNOWN
+*                PARAMETER VECTOR  A.
+*           = 4: THE ROUTINE  DSINV  (F012)  WAS UNABLE TO SOLVE THE
+*                NORMAL EQUATIONS.
+*
+*************************************************************************
+*
+*   THE FOLLOWING SUBROUTINE IS A SIMPLE EXAMPLE FOR SUB.
+*
+*     SUBROUTINE SUB(K,X,N,A,F,DF,MODE,NERROR)
+*
+*     IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+*     DIMENSION A(*),X(*),DF(*)
+*     PARAMETER (PIR = 0.56418 95835 47756 287D0)
+*     NERROR=1
+*     IF(A(1) .EQ. 0) RETURN
+*     T=0.5D0*((X(1)-1)/A(1))**2)
+*     F=PIR*EXP(-T)/A(1)
+*     IF(F .EQ. 0) RETURN
+*     NERROR=0
+*     IF(MODE .NE. 0) DF(1)=-F*(1-2*T)/A(1)**2
+*     RETURN
+*     END
+*
+*************************************************************************
+
+       CALL D501L2(K,M,X,NX,MODE,EPS,MAXIT,IPRT,N,A,AL,AU,
+     1             PHI,DPHI,IAFR,MFR,W(1),W(N+1),W(2*N+1),W(3*N+1),
+     2             W(4*N+1),W(5*N+1),W(6*N+1),W(7*N+1),W(7*N+N*N+1),
+     3             SUB,NERROR)
+
+      RETURN
+
+      END
+
+
+
+