|
Текст подпрограммы и версий bs03r_c.zip , bs03d_c.zip |
Тексты тестовых примеров tbs03r_c.zip , tbs03d_c.zip |
Вычисление медианы заданной выборки.
Пусть задан выборочный вектор 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