|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/sf_htm_p/sf86r_p.htm
Дата изменения: Mon Nov 23 12:33:29 2015 Дата индексирования: Sun Apr 10 02:23:50 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий sf86r_p.zip |
Тексты тестовых примеров tsf86r_p.zip |
Вычисление функции распределения вероятностей Эрланга (распределения Пирсона 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 )