Введение
В этом лабораторном практикуме мы изучим, как приблизить функцию плотности вероятности (PDF) нормального распределения на языке C. Сначала мы прочитаем входные значения для точки (x), среднего значения (μ) и стандартного отклонения (σ), затем вычислим PDF, используя стандартную формулу. Наконец, мы выведем вычисленное значение PDF.
Лабораторный практикум охватывает пошаговый процесс реализации этой функциональности на языке C, включая чтение пользовательского ввода, вычисление PDF и отображение результата. Цель этого практикума — обеспечить практическое понимание работы с концепциями вероятности и комбинаторики в программировании на языке C.
Чтение x, среднего μ и стандартного отклонения σ
В этом шаге мы изучим, как читать входные значения для вычисления функции плотности вероятности (PDF) нормального распределения на языке C. Мы создадим программу, которая принимает три ключевых параметра: x (точка), μ (среднее значение) и σ (стандартное отклонение).
Сначала создадим новый файл C для нашей реализации:
cd ~/project
nano normal_pdf.c
Теперь напишем начальный код для чтения входных значений:
#include <stdio.h>
int main() {
double x, mean, std_dev;
printf("Введите точку x: ");
scanf("%lf", &x);
printf("Введите среднее значение (μ): ");
scanf("%lf", &mean);
printf("Введите стандартное отклонение (σ): ");
scanf("%lf", &std_dev);
printf("Введенные значения:\n");
printf("x = %.2f\n", x);
printf("Среднее (μ) = %.2f\n", mean);
printf("Стандартное отклонение (σ) = %.2f\n", std_dev);
return 0;
}
Компилируем и запускаем программу:
gcc normal_pdf.c -o normal_pdf
./normal_pdf
Пример вывода:
Введите точку x: 2.5
Введите среднее значение (μ): 0
Введите стандартное отклонение (σ): 1
Введенные значения:
x = 2.50
Среднее (μ) = 0.00
Стандартное отклонение (σ) = 1.00
Этот код демонстрирует, как:
- Использовать
scanf()для чтения чисел с плавающей точкой двойной точности - Сохранять входные значения для x, среднего и стандартного отклонения
- Выводить входные значения для подтверждения правильности ввода
Вычисление PDF = (1/(σ√(2π))) * exp(-((x-μ)²/(2σ²)))
В этом шаге мы расширим нашу предыдущую программу, чтобы вычислить функцию плотности вероятности (PDF) нормального распределения, используя математическую формулу.
Обновите файл normal_pdf.c:
nano ~/project/normal_pdf.c
Замените предыдущее содержимое на:
#include <stdio.h>
#include <math.h>
double compute_normal_pdf(double x, double mean, double std_dev) {
// Вычисление PDF по стандартной формуле нормального распределения
double pi = 3.14159265358979323846;
double coefficient = 1.0 / (std_dev * sqrt(2 * pi));
double exponent = -pow(x - mean, 2) / (2 * pow(std_dev, 2));
return coefficient * exp(exponent);
}
int main() {
double x, mean, std_dev, pdf;
printf("Введите точку x: ");
scanf("%lf", &x);
printf("Введите среднее значение (μ): ");
scanf("%lf", &mean);
printf("Введите стандартное отклонение (σ): ");
scanf("%lf", &std_dev);
// Вычисление PDF
pdf = compute_normal_pdf(x, mean, std_dev);
printf("Введенные значения:\n");
printf("x = %.2f\n", x);
printf("Среднее (μ) = %.2f\n", mean);
printf("Стандартное отклонение (σ) = %.2f\n", std_dev);
printf("Плотность вероятности = %.6f\n", pdf);
return 0;
}
Компилируйте программу с библиотекой математических функций:
gcc ~/project/normal_pdf.c -o ~/project/normal_pdf -lm
Запустите программу:
~/project/normal_pdf
Пример вывода:
Введите точку x: 2.5
Введите среднее значение (μ): 0
Введите стандартное отклонение (σ): 1
Введенные значения:
x = 2.50
Среднее (μ) = 0.00
Стандартное отклонение (σ) = 1.00
Плотность вероятности = 0.017528
Ключевые моменты этой реализации:
- Мы создали отдельную функцию
compute_normal_pdf()для вычисления PDF - Используем функции библиотеки
math.h, такие какsqrt(),exp()иpow() - Реализовали стандартную формулу PDF нормального распределения
- Вывели вычисленную плотность вероятности
Вывод значения
На этом заключительном шаге мы улучшим нашу программу вычисления PDF нормального распределения, добавив более подробный формат вывода и варианты визуализации.
Обновите файл normal_pdf.c:
nano ~/project/normal_pdf.c
Замените предыдущее содержимое на:
#include <stdio.h>
#include <math.h>
double compute_normal_pdf(double x, double mean, double std_dev) {
double pi = 3.14159265358979323846;
double coefficient = 1.0 / (std_dev * sqrt(2 * pi));
double exponent = -pow(x - mean, 2) / (2 * pow(std_dev, 2));
return coefficient * exp(exponent);
}
void print_pdf_details(double x, double mean, double std_dev, double pdf) {
printf("\n--- Подробности PDF нормального распределения ---\n");
printf("Точка (x) : %.2f\n", x);
printf("Среднее (μ) : %.2f\n", mean);
printf("Стандартное отклонение (σ) : %.2f\n", std_dev);
printf("Плотность вероятности (f(x)): %.6f\n", pdf);
// Добавление интерпретации значения PDF
if (pdf > 0.3) {
printf("Интерпретация: Высокая плотность вероятности\n");
} else if (pdf > 0.1) {
printf("Интерпретация: Средняя плотность вероятности\n");
} else {
printf("Интерпретация: Низкая плотность вероятности\n");
}
}
int main() {
double x, mean, std_dev, pdf;
printf("Калькулятор функции плотности вероятности нормального распределения\n");
printf("Введите точку x: ");
scanf("%lf", &x);
printf("Введите среднее значение (μ): ");
scanf("%lf", &mean);
printf("Введите стандартное отклонение (σ): ");
scanf("%lf", &std_dev);
// Вычисление PDF
pdf = compute_normal_pdf(x, mean, std_dev);
// Вывод подробных результатов
print_pdf_details(x, mean, std_dev, pdf);
return 0;
}
Компилируйте программу:
gcc ~/project/normal_pdf.c -o ~/project/normal_pdf -lm
Запустите программу:
~/project/normal_pdf
Пример вывода:
Калькулятор функции плотности вероятности нормального распределения
Введите точку x: 2.5
Введите среднее значение (μ): 0
Введите стандартное отклонение (σ): 1
--- Подробности PDF нормального распределения ---
Точка (x) : 2.50
Среднее (μ) : 0.00
Стандартное отклонение (σ) : 1.00
Плотность вероятности (f(x)): 0.017528
Интерпретация: Низкая плотность вероятности
Основные улучшения в этой реализации:
- Добавлена отдельная функция
print_pdf_details()для форматированного вывода. - Включена простая интерпретация значения PDF.
- Улучшен пользовательский интерфейс с описательным заголовком.
- Сохранена основная логика вычисления PDF из предыдущих шагов.
Резюме
В этом лабораторном практикуме мы изучили, как считывать входные значения для функции плотности вероятности (PDF) нормального распределения на языке C, включая точку x, среднее значение μ и стандартное отклонение σ. Затем мы реализовали математическую формулу для вычисления PDF, которая включает вычисление коэффициента и показателя степени. Последний шаг — вывести вычисленное значение PDF.
Ключевые моменты, изученные в этом практикуме: 1) использование scanf() для считывания чисел с плавающей точкой двойной точности, 2) хранение входных значений для x, среднего значения и стандартного отклонения, 3) вычисление PDF с использованием стандартной формулы нормального распределения и 4) вывод полученного значения PDF.



