Вычисление дисперсии на языке C

CCBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии (lab) вы узнаете, как вычислить дисперсию набора чисел на языке C. Лабораторное занятие охватывает три основные стадии: вычисление среднего значения, вычисление суммы квадратов отклонений от среднего значения и деление этой суммы на количество чисел для получения дисперсии. В лабораторном занятии приведены подробные примеры кода и объяснения, которые помогут вам реализовать эти статистические вычисления на языке C.

Лабораторное занятие начинается с демонстрации того, как вычислить среднее значение набора чисел, что является важной стадией в вычислении дисперсии. Затем показано, как вычислить сумму квадратов отклонений от среднего значения, и, наконец, как разделить эту сумму на количество чисел, чтобы получить дисперсию. Следуя пошаговым инструкциям, вы получите твердое понимание того, как выполнять эти статистические операции с использованием языка программирования C.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/CompoundTypesGroup(["Compound Types"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/ControlFlowGroup -.-> c/for_loop("For Loop") c/CompoundTypesGroup -.-> c/arrays("Arrays") c/FunctionsGroup -.-> c/math_functions("Math Functions") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/for_loop -.-> lab-435167{{"Вычисление дисперсии на языке C"}} c/arrays -.-> lab-435167{{"Вычисление дисперсии на языке C"}} c/math_functions -.-> lab-435167{{"Вычисление дисперсии на языке C"}} c/output -.-> lab-435167{{"Вычисление дисперсии на языке C"}} end

Вычисление среднего значения

На этом этапе вы узнаете, как вычислить среднее значение набора чисел на языке C. Среднее значение вычисляется путем сложения всех значений и деления на общее количество чисел.

Сначала создайте новый файл на языке C для реализации вычисления среднего значения:

cd ~/project
nano mean.c

Теперь напишите следующий код на языке C для вычисления среднего значения:

#include <stdio.h>

int main() {
    int numbers[] = {10, 20, 30, 40, 50};
    int count = sizeof(numbers) / sizeof(numbers[0]);
    int sum = 0;

    // Calculate sum of all numbers
    for (int i = 0; i < count; i++) {
        sum += numbers[i];
    }

    // Calculate mean
    float mean = (float)sum / count;

    printf("Numbers: ");
    for (int i = 0; i < count; i++) {
        printf("%d ", numbers[i]);
    }
    printf("\nCount: %d\n", count);
    printf("Sum: %d\n", sum);
    printf("Mean: %.2f\n", mean);

    return 0;
}

Скомпилируйте и запустите программу:

gcc mean.c -o mean
./mean

Пример вывода:

Numbers: 10 20 30 40 50
Count: 5
Sum: 150
Mean: 30.00

Разберем код по частям:

  • Мы определяем массив целых чисел numbers
  • Вычисляем количество чисел с помощью sizeof()
  • Используем цикл for для вычисления суммы всех чисел
  • Вычисляем среднее значение, разделив сумму на количество
  • Выводим на экран числа, количество, сумму и среднее значение

Сумма (x - среднее)² и деление на количество

На этом этапе вы узнаете, как вычислить дисперсию, вычислив сумму квадратов отклонений от среднего значения и разделив ее на количество чисел.

Сначала измените предыдущий файл mean.c, чтобы включить вычисление дисперсии:

cd ~/project
nano variance.c

Напишите следующий код на языке C для вычисления дисперсии:

#include <stdio.h>
#include <math.h>

int main() {
    int numbers[] = {10, 20, 30, 40, 50};
    int count = sizeof(numbers) / sizeof(numbers[0]);
    int sum = 0;
    float mean, variance = 0.0;

    // Calculate sum and mean
    for (int i = 0; i < count; i++) {
        sum += numbers[i];
    }
    mean = (float)sum / count;

    // Calculate sum of squared deviations
    for (int i = 0; i < count; i++) {
        variance += pow(numbers[i] - mean, 2);
    }

    // Divide by count to get variance
    variance /= count;

    printf("Numbers: ");
    for (int i = 0; i < count; i++) {
        printf("%d ", numbers[i]);
    }
    printf("\nMean: %.2f\n", mean);
    printf("Variance: %.2f\n", variance);

    return 0;
}

Скомпилируйте и запустите программу с использованием математической библиотеки:

gcc variance.c -o variance -lm
./variance

Пример вывода:

Numbers: 10 20 30 40 50
Mean: 30.00
Variance: 200.00

Основные этапы вычисления дисперсии:

  • Вычислить среднее значение (из предыдущего этапа)
  • Вычесть среднее значение из каждого числа
  • Возвести разности в квадрат
  • Сложить квадраты разностей
  • Разделить на количество чисел

Вывод дисперсии

На этом этапе вы узнаете, как форматировать и выводить результат вычисления дисперсии с разной степенью точности, а также как создать функцию, чтобы сделать код более модульным.

Измените предыдущий файл variance.c, чтобы улучшить вывод дисперсии:

cd ~/project
nano variance_print.c

Напишите следующий код на языке C, чтобы улучшить вывод дисперсии:

#include <stdio.h>
#include <math.h>

// Function to calculate variance
float calculate_variance(int numbers[], int count) {
    int sum = 0;
    float mean, variance = 0.0;

    // Calculate sum and mean
    for (int i = 0; i < count; i++) {
        sum += numbers[i];
    }
    mean = (float)sum / count;

    // Calculate sum of squared deviations
    for (int i = 0; i < count; i++) {
        variance += pow(numbers[i] - mean, 2);
    }

    // Divide by count to get variance
    variance /= count;

    return variance;
}

// Function to print variance with different formats
void print_variance(float variance) {
    printf("Variance Representations:\n");
    printf("1. Standard Format:   %.2f\n", variance);
    printf("2. Scientific Notation: %e\n", variance);
    printf("3. Precise Format:    %.4f\n", variance);
}

int main() {
    int numbers[] = {10, 20, 30, 40, 50};
    int count = sizeof(numbers) / sizeof(numbers[0]);

    // Calculate and print variance
    float variance = calculate_variance(numbers, count);

    printf("Original Numbers: ");
    for (int i = 0; i < count; i++) {
        printf("%d ", numbers[i]);
    }
    printf("\n\n");

    print_variance(variance);

    return 0;
}

Скомпилируйте и запустите программу:

gcc variance_print.c -o variance_print -lm
./variance_print

Пример вывода:

Original Numbers: 10 20 30 40 50

Variance Representations:
1. Standard Format:   200.00
2. Scientific Notation: 2.000000e+02
3. Precise Format:    200.0000

Основные улучшения:

  • Созданы отдельные функции для вычисления дисперсии
  • Добавлены несколько форматов вывода дисперсии
  • Показаны различные способы представления дисперсии

Резюме

В этом лабораторном занятии (lab) вы узнали, как вычислить среднее значение набора чисел на языке C путем сложения всех значений и деления на общее количество. Затем вы узнали, как вычислить дисперсию, вычислив сумму квадратов отклонений от среднего значения и разделив ее на количество чисел. Это позволяет измерить разброс или рассеяние данных вокруг среднего значения, что является полезной метрикой для статистического анализа.