Текст подпрограммы и версий
bs03r_c.zip , bs03d_c.zip
Тексты тестовых примеров
tbs03r_c.zip , tbs03d_c.zip

Подпрограмма:  bs03r_c

Назначение

Вычисление медианы заданной выборки.

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

Пусть задан выборочный вектор X = (x1, x2,..., xN). Подпрограмма упорядочивает его компоненты по возрастанию и вычисляет выборочное значение медианы XMED:

           XMED = x(N + 1)/2   для нечетных N,   

           XMED = 0.5(xN/2 + x(N/2)+1)   для четных N .

С.А.Айвазян, И.С.Енюков, Л.Д.Мешалкин. Прикладная статистика: основы моделирования и первичная обработка данных. М.,"Финансы и статистика", 1983 г.

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

    int bs03r_c (real *x, integer *n, real *xmed)

Параметры

x - заданный вещественный выборочный вектор длины n;
n - длина вектора X (тип: целый);
xmed - вещественная переменная, содержащая выборочное значение медианы.

Версии

bs03d_c - вычисление медианы выборки в режиме удвоенной точности.

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

avz5r_c - упорядочивание вектора по возрастанию значений его компонент; используется в подпрограмме bs03r_c.
avz5d_c - упорядочивание вектора заданного с удвоенной точностью, по возрастанию его компонент; используется в подпрограмме bs03d_c.

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

  По окончании работы подпрограммы массив x содержит компоненты исходного вектора X в возрастающем порядке.

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

int main(void)
{
    /* Initialized data */
    static float x[4] = { 1.f,2.f,3.f,4.f };

    /* Local variables */
    extern int bs03r_c(float *, int *, float *);
    static float xmed;
    static int n;

    n = 4;
    bs03r_c(x, &n, &xmed);

    printf("\n tbs03r: xmed = %16.7e \n", xmed);
    return ;
} /* main */


Результаты:  xmed = 2.5