home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 09 / statis / verteil.inc < prev   
Encoding:
Text File  |  1987-07-01  |  2.9 KB  |  77 lines

  1. {***************************************************************************}
  2. {*                              VERTEIL.INC                                *}
  3. {*            Verteilungsfunktionen der Standardverteilungen               *}
  4. {***************************************************************************}
  5. FUNCTION verteil (v_fkt: Verteilungstyp; p: Parametervector; x: REAL): REAL;
  6.  
  7. CONST a1 = 0.31938153;
  8.       a2 =-0.356563782;
  9.       a3 = 1.781477937;
  10.       a4 =-1.821255978;
  11.       a5 = 1.330274429;
  12.  
  13. VAR I : INTEGER;               signum : BOOLEAN;
  14.     t, dummy1, dummy2, dummy3, dummy4 : REAL;
  15.     p_vec                             : Parametervector;
  16.  
  17. BEGIN
  18.   CASE v_fkt OF
  19.    ber  :  BEGIN
  20.              IF x < 0.0 THEN verteil := 0.0
  21.              ELSE IF x >= 1 THEN verteil := 1.0
  22.              ELSE verteil := 1.0-p[1];
  23.            END;
  24.    poi  :  BEGIN
  25.              dummy1 := 0.0; p_vec[1] := p[1];
  26.              FOR I := 0 TO Trunc(x) DO dummy1 := dummy1+dichte(poi,p_vec,I);
  27.              verteil := dummy1;
  28.            END;
  29.    expo :  BEGIN
  30.              IF x < 0.0 THEN verteil:=0.0
  31.              ELSE verteil := 1.0-Exp(-p[1]*x);
  32.            END;
  33.    bin  :  BEGIN
  34.              IF x < 0.0 THEN verteil := 0.0
  35.              ELSE IF x >= p[1] THEN verteil:=1.0
  36.              ELSE BEGIN
  37.                     dummy1 := 0.0;
  38.                     p_vec[1] := p[1]; p_vec[2] := p[2];
  39.                     FOR I := 0 TO Trunc(x) DO
  40.                       dummy1 := dummy1+dichte(bin,p_vec,I);
  41.                     verteil := dummy1;
  42.                   END;
  43.            END;
  44.    hyp  :  BEGIN
  45.              dummy1 := 0.0;
  46.              IF ((p[3]+p[2]-p[1]) > dummy1) THEN dummy1 := p[3]+p[2]-p[1];
  47.              dummy2 := p[3];
  48.              IF p[2] < p[3] THEN dummy2 := p[2];
  49.              IF x >= dummy2 THEN verteil := 1.0
  50.              ELSE IF x < dummy1 THEN verteil := 0.0
  51.              ELSE
  52.                BEGIN
  53.                  dummy3 := 0.0;
  54.                  p_vec[1] := p[1]; p_vec[2] := p[2]; p_vec[3] := p[3];
  55.                  FOR I := 0 TO Trunc(x) DO
  56.                    dummy3 := dummy3+dichte(hyp,p_vec,I);
  57.                  verteil := dummy3;
  58.                END;
  59.            END;
  60.    sta  :  BEGIN
  61.              t := 1.0/(1.0+x*0.2316419);
  62.              IF x < 0.0 THEN
  63.                BEGIN signum := TRUE; dummy1 := -1.0*x;  END
  64.              ELSE
  65.                BEGIN signum := FALSE; dummy1 := x; END;
  66.              dummy2 := a1*t+a2*t*t+a3*t*t*t+a4*t*t*t*t+a5*t*t*t*t*t;
  67.              dummy3 := Exp(-x*x/2.0)/Sqrt(2.0*Pi);
  68.              dummy1 := 1.0-dummy3*dummy2;
  69.              IF NOT signum THEN verteil := dummy1
  70.              ELSE verteil := 1.0-dummy1;
  71.            END;
  72.    nor  :  verteil := verteil(sta,p_vec,(x-p[1])/p[2]);
  73.   END;
  74. END;
  75. {---------------------------------------------------------------------------}
  76. {                           Ende VERTEIL.INC                                }
  77.