Approximierte Wahrscheinlichkeitsdichtefunktion (PDF) der Normalverteilung in C

CCBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen wir, wie man die Wahrscheinlichkeitsdichtefunktion (PDF) der Normalverteilung in C approximiert. Zuerst lesen wir die Eingabewerte für den Punkt (x), den Mittelwert (μ) und die Standardabweichung (σ), dann berechnen wir die PDF mithilfe der Standardformel. Schließlich geben wir den berechneten PDF-Wert aus.

Das Lab deckt den schrittweisen Prozess der Implementierung dieser Funktionalität in C ab, einschließlich der Eingabe von Benutzerdaten, der Berechnung der PDF und der Anzeige des Ergebnisses. Dieses Lab zielt darauf ab, ein praktisches Verständnis der Arbeit mit Wahrscheinlichkeits- und Kombinatorikkonzepten in der C-Programmierung zu vermitteln.

x, Mittelwert μ, Standardabweichung σ einlesen

In diesem Schritt lernen wir, wie man Eingabewerte für die Berechnung der Wahrscheinlichkeitsdichtefunktion (PDF) der Normalverteilung in C liest. Wir erstellen ein Programm, das drei Schlüsselparameter entgegennimmt: x (der Punkt), μ (Mittelwert) und σ (Standardabweichung).

Erstellen wir zunächst eine neue C-Datei für unsere Implementierung:

cd ~/project
nano normal_pdf.c

Schreiben wir nun den Anfangscode zum Einlesen der Eingabewerte:

#include <stdio.h>

int main() {
    double x, mean, std_dev;

    printf("Geben Sie den Punkt x ein: ");
    scanf("%lf", &x);

    printf("Geben Sie den Mittelwert (μ) ein: ");
    scanf("%lf", &mean);

    printf("Geben Sie die Standardabweichung (σ) ein: ");
    scanf("%lf", &std_dev);

    printf("Eingabewerte:\n");
    printf("x = %.2f\n", x);
    printf("Mittelwert (μ) = %.2f\n", mean);
    printf("Standardabweichung (σ) = %.2f\n", std_dev);

    return 0;
}

Kompilieren und ausführen des Programms:

gcc normal_pdf.c -o normal_pdf
./normal_pdf

Beispielausgabe:

Geben Sie den Punkt x ein: 2.5
Geben Sie den Mittelwert (μ) ein: 0
Geben Sie die Standardabweichung (σ) ein: 1
Eingabewerte:
x = 2.50
Mittelwert (μ) = 0.00
Standardabweichung (σ) = 1.00

Dieser Code zeigt, wie man:

  1. scanf() verwendet, um Fließkommazahlen doppelter Genauigkeit einzulesen
  2. Eingabewerte für x, Mittelwert und Standardabweichung speichert
  3. die Eingabewerte ausgibt, um die korrekte Eingabe zu bestätigen

PDF berechnen = (1/(σ√(2π))) * exp(-((x-μ)²/(2σ²)))

In diesem Schritt erweitern wir unser vorheriges Programm, um die Wahrscheinlichkeitsdichtefunktion (PDF) für die Normalverteilung mithilfe der mathematischen Formel zu berechnen.

Aktualisieren Sie die Datei normal_pdf.c:

nano ~/project/normal_pdf.c

Ersetzen Sie den vorherigen Inhalt durch:

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

double compute_normal_pdf(double x, double mean, double std_dev) {
    // PDF berechnen nach der Standardnormalverteilungsformel
    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("Geben Sie den Punkt x ein: ");
    scanf("%lf", &x);

    printf("Geben Sie den Mittelwert (μ) ein: ");
    scanf("%lf", &mean);

    printf("Geben Sie die Standardabweichung (σ) ein: ");
    scanf("%lf", &std_dev);

    // PDF berechnen
    pdf = compute_normal_pdf(x, mean, std_dev);

    printf("Eingabewerte:\n");
    printf("x = %.2f\n", x);
    printf("Mittelwert (μ) = %.2f\n", mean);
    printf("Standardabweichung (σ) = %.2f\n", std_dev);
    printf("Wahrscheinlichkeitsdichte = %.6f\n", pdf);

    return 0;
}

Kompilieren Sie das Programm mit der Mathematikbibliothek:

gcc ~/project/normal_pdf.c -o ~/project/normal_pdf -lm

Führen Sie das Programm aus:

~/project/normal_pdf

Beispielausgabe:

Geben Sie den Punkt x ein: 2.5
Geben Sie den Mittelwert (μ) ein: 0
Geben Sie die Standardabweichung (σ) ein: 1
Eingabewerte:
x = 2.50
Mittelwert (μ) = 0.00
Standardabweichung (σ) = 1.00
Wahrscheinlichkeitsdichte = 0.017528

Wichtige Punkte dieser Implementierung:

  1. Wir haben eine separate Funktion compute_normal_pdf() erstellt, um die PDF zu berechnen.
  2. Wir haben Bibliotheksfunktionen aus math.h wie sqrt(), exp() und pow() verwendet.
  3. Wir haben die Standardformel für die PDF der Normalverteilung implementiert.
  4. Wir haben die berechnete Wahrscheinlichkeitsdichte ausgegeben.

Ausgabe des Wertes

In diesem letzten Schritt erweitern wir unser Programm zur Berechnung der Wahrscheinlichkeitsdichtefunktion (PDF) der Normalverteilung um detailliertere Ausgabeformatierungen und Visualisierungsoptionen.

Aktualisieren Sie die Datei normal_pdf.c:

nano ~/project/normal_pdf.c

Ersetzen Sie den vorherigen Inhalt durch:

#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--- Details der Wahrscheinlichkeitsdichtefunktion der Normalverteilung ---\n");
    printf("Punkt (x)               : %.2f\n", x);
    printf("Mittelwert (μ)               : %.2f\n", mean);
    printf("Standardabweichung (σ)  : %.2f\n", std_dev);
    printf("Wahrscheinlichkeitsdichte (f(x)): %.6f\n", pdf);

    // Interpretation des PDF-Wertes hinzufügen
    if (pdf > 0.3) {
        printf("Interpretation: Hohe Wahrscheinlichkeitsdichte\n");
    } else if (pdf > 0.1) {
        printf("Interpretation: Mittlere Wahrscheinlichkeitsdichte\n");
    } else {
        printf("Interpretation: Niedrige Wahrscheinlichkeitsdichte\n");
    }
}

int main() {
    double x, mean, std_dev, pdf;

    printf("Rechner für die Wahrscheinlichkeitsdichtefunktion der Normalverteilung\n");
    printf("Geben Sie den Punkt x ein: ");
    scanf("%lf", &x);

    printf("Geben Sie den Mittelwert (μ) ein: ");
    scanf("%lf", &mean);

    printf("Geben Sie die Standardabweichung (σ) ein: ");
    scanf("%lf", &std_dev);

    // PDF berechnen
    pdf = compute_normal_pdf(x, mean, std_dev);

    // Detaillierte Ergebnisse ausgeben
    print_pdf_details(x, mean, std_dev, pdf);

    return 0;
}

Kompilieren Sie das Programm:

gcc ~/project/normal_pdf.c -o ~/project/normal_pdf -lm

Führen Sie das Programm aus:

~/project/normal_pdf

Beispielausgabe:

Rechner für die Wahrscheinlichkeitsdichtefunktion der Normalverteilung
Geben Sie den Punkt x ein: 2.5
Geben Sie den Mittelwert (μ) ein: 0
Geben Sie die Standardabweichung (σ) ein: 1

--- Details der Wahrscheinlichkeitsdichtefunktion der Normalverteilung ---
Punkt (x)               : 2.50
Mittelwert (μ)               : 0.00
Standardabweichung (σ)  : 1.00
Wahrscheinlichkeitsdichte (f(x)): 0.017528
Interpretation: Niedrige Wahrscheinlichkeitsdichte

Wichtige Verbesserungen in dieser Implementierung:

  1. Hinzufügen einer dedizierten Funktion print_pdf_details() für formatierte Ausgaben.
  2. Einfache Interpretation des PDF-Wertes.
  3. Verbesserte Benutzeroberfläche mit einem beschreibenden Titel.
  4. Beibehaltung der Kernlogik zur PDF-Berechnung aus den vorherigen Schritten.

Zusammenfassung

In diesem Labor haben wir gelernt, wie man Eingabewerte für die Wahrscheinlichkeitsdichtefunktion (PDF) der Normalverteilung in C liest, einschließlich des Punktes x, des Mittelwerts μ und der Standardabweichung σ. Anschließend haben wir die mathematische Formel implementiert, um die PDF zu berechnen, was die Berechnung der Koeffizienten- und Exponentenwerte umfasst. Der letzte Schritt besteht darin, den berechneten PDF-Wert auszugeben.

Die wichtigsten Lernpunkte dieses Labors sind: 1) die Verwendung von scanf() zum Lesen von Fließkommazahlen mit doppelter Genauigkeit, 2) das Speichern der Eingabewerte für x, Mittelwert und Standardabweichung, 3) die Berechnung der PDF mithilfe der Standardformel der Normalverteilung und 4) die Ausgabe des resultierenden PDF-Wertes.