Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Алгоритмы / Математика / Математическая статистика (теория вероятности) /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Распределение Стьюдента - Программирование от RIN.RU
Распределение Стьюдента



Файл studentDF.h
/****************************************************/
/* Распределение Стьюдента */
/****************************************************/
#ifndef __STUDENT_H__


#define ENTRY extern
#define LOCAL static


ENTRY double
studentDF(double n, double x);
//Вычисляется вероятность того, что случайная величина,
// подчиняющаяся распределению Стьюдента (T-распределению)
// c n степенями свободы, не превосходит (меньше или равна) x.


ENTRY double
inv_studentDF(double n, double p);
// По данной вероятности p вычисляется значение q,
// для которого studentDF(n,q) вернет p.


#define __STUDENT_H__ /* Prevents redefinition */
#endif /* Ends #ifndef __STUDENT_H__ */






Файл studentDF.cpp
/****************************************************/
/* Распределение Стьюдента */
/****************************************************/


#include <assert.h>
#include <math.h>


#include "betaDF.h"


ENTRY double
studentDF(double n, double x)
/*
* Вычисляется вероятность того, что случайная величина,
* подчиняющаяся распределению Стьюдента (T-распределению)
* c n степенями свободы, не превосходит (меньше или равна) x.
*/
{
assert(n > 0);


if (x == 0.0)
return 0.5;
BetaDF b=BetaDF(0.5 * n, 0.5);
double z = 0.5 * b.value(n / (n + x * x));
return (x > 0.0) ? 1.0 - z : z;
}/*studentDF*/


ENTRY double
inv_studentDF(double n, double p)
/*
* По данной вероятности p вычисляется значение q,
* для которого studentDF(n,q) вернет p.
*/
{
if (p == 0.5) return 0.0;
double z = 1.0 - 2.0 * p;
BetaDF b=BetaDF(0.5, 0.5*n);
z = b.quantile(fabs(z));
double q = sqrt(n*z/(1.0-z));
return (p < 0.5) ? -q : q;
}


<<<  Назад
 1  2 


 8  Комментарии к статье  8 8  Обсудить в чате

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь