Текст подпрограммы и версий
sf86r_p.zip
Тексты тестовых примеров
tsf86r_p.zip

Подпрограмма:  SF86R (модуль SF86R_p)

Назначение

Вычисление функции распределения вероятностей Эрланга (распределения Пирсона 3 - го типа).

Математическое описание

Подпрограмма SF86R вычисляет функцию распределения Эрланга (распределения Пирсона 3 - го типа) для   i - го интервала группировки  [xi - 1, xi]  ( i = 1, 2, ..., N) при заданном  x0 = x0  по формуле

               x i                  x i-1
     P  =  ∫   f(x) dx   -   ∫    f(x) dx ,
            0                    0

 где  f(x)  =  [ (x - x0)k - 1 / (k - 1)! ]  (k/m)k  e - k/m (x - x0) ;

       m  -  среднее значение распределения Эрланга;
       k  =  (m - x0) 2 / vars;
      x0  - нижняя граница первого интервала группировки;
    vars  -  дисперсия распределения Эрланга;
       N  -  количество интервалов группировки;
      xi  = xi ;
    xi-1  = xi-1 .

Абрамовиц М., Стиган И. Справочник по специальным функциям. М.: Наука, 1979.

Использование

procedure SF86R(RM :Real; VARS :Real; N :Integer;
                var X :Array of Real; X0 :Real; var P :Array of Real);

Параметры

RM - заданное среднее значение M распределения Эрланга (тип: вещественный);
VARS - заданная дисперсия vars распределения Эрланга (тип: вещественный);
N - заданное количество интервалов группировки (тип: целый);
X - вещественный одномерный массив длины N, содержащий заданные границы  xi  интервалов группировки, i = 1, 2, ..., N;
X0 - заданная нижняя граница первого интервала группировки (тип: вещественный);
P - вещественный одномерный массив длины N + 1, содержащий вычисленные значения  pi  (i = 1, 2, ..., N) функции распределения вероятностей Эрланга для  i - го интервала группировки, причем
                                      N
         P(N+1)   =   1  -   ∑   pi  .
                                    i=1 

Версии: нет

Вызываемые подпрограммы: нет

Замечания по использованию: нет

Пример использования

Unit tsf86r_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, SF86R_p;

function tsf86r: String;

implementation

function tsf86r: String;
var
N,_i :Integer;
RM,VARS,X0 :Real;
P :Array [0..10] of Real;
const
X :Array [0..9] of Real = ( 0.05,0.15,0.25,0.35,0.45,0.55,0.65,0.75,0.85,
0.95 );
begin
Result := '';  { результат функции }
RM := 2.0;
VARS := 1.0;
N := 10;
X0 := 0.0;
SF86R(RM,VARS,N,X,X0,P);
Result := Result + #$0D#$0A;
for _i:=0 to 10 do
 begin
  Result := Result + Format('%16.7f ',[P[_i]]);
  if ( ((_i+1) mod 4)=0 )
   then Result := Result + #$0D#$0A;
 end;
Result := Result + #$0D#$0A;
UtRes('tsf86r',Result);  { вывод результатов в файл tsf86r.res }
exit;
end;

end.


Результаты:

        P = (  0.3841996E-5,  0.2620249E-3,  0.1485732E-2, 
                  0.4001807E-2,  0.7705259E-2,  0.1228324E-1,  
                  0.1735353E-1,  0.2254702E-1,  0.2754702E-1,  
                  0.3210832E-1,  0.8747022   )