Quellcode für maha

import numpy as np
import matplotlib.pyplot as plt

# Beispielhafte Parameter der Verteilung
mu = np.array([2.0, 3.0])  # Erwartungswert
Sigma = np.array([[2.0, 1.2], 
                  [1.2, 1.0]])  # Kovarianzmatrix (nicht-diagonal, d.h. korrelierte Größen)


[Doku]def plot_covariance_ellipse(mu, Sigma, ax, n_std=1.0, **kwargs): """ **TODO**: Zeichnen Sie eine Kovarianzellipse (z. B. 1-, 2- oder 3-Sigma) um den Mittelwert einer 2D-Normalverteilung. Verwenden Sie das übergebene `axes <https://matplotlib.org/stable/api/axes_api.html>`_ Objekt zum zeichnen. Parameter: ---------- mu : np.ndarray 2D-Vektor mit dem Mittelwert (Schwerpunkt) der Ellipse. Sigma : np.ndarray 2x2-Kovarianzmatrix der Verteilung. ax : matplotlib.axes.Axes Achse, in die die Ellipse gezeichnet werden soll. n_std : float Skalierungsfaktor für die Ellipsenweite (z. B. 1 = 1-Sigma, 2 = 2-Sigma, ...). **kwargs : Zusätzliche Parameter für `ax.plot`, z. B. Farbe oder Linienstil. """ # TODO: Generieren Sie 100 Punkte auf dem Einheitskreis # Verwenden Sie np.linspace um 100 verschiedene Winkel zwischen 0 und 2pi zu bekommen. # Wenden Sie dann np.cos und np.sin an und verwenden Sie anschließend np.stack # um daraus ein (2, N) Array zu erzeugen. # TODO: Bestimmen Sie die Cholesky-Zerlegung der Kovarianzmatrix Sigma # L @ L.T # TODO: Transformieren Sie den Einheitskreises in eine entsprechende Ellipse # Multiplizieren Sie mit n_std um die Ellipse zu skalieren. # Stellen Sie sicher das die Ellipse um den Mittelwert mu zentriert ist. # Zeichnen Sie die Ellipse in das übergebene ax Objekt. # Übergeben Sie die zusätzlichen Parameter in kwargs um das Aussehen der Ellipse # beim Aufruf der Methode steuern zu können. pass
# --------------------------------------------------- # There is no need to change anything below this line # --------------------------------------------------- if __name__ == "__main__": # Stichprobe generieren samples = np.random.multivariate_normal(mu, Sigma, size=500) # Plot vorbereiten fig, ax = plt.subplots(figsize=(6, 6)) ax.set_aspect('equal') ax.grid(True) # Datenpunkte darstellen ax.scatter(samples[:, 0], samples[:, 1], s=10, alpha=0.3, label="Samples") # Erwartungswert markieren ax.plot(mu[0], mu[1], 'ro', label="Mittelwert") # Kovarianzellipse zeichnen plot_covariance_ellipse(mu, Sigma, ax, n_std=1.0, color='#FF0000', label="1-Sigma-Ellipse") plot_covariance_ellipse(mu, Sigma, ax, n_std=2.0, color='#CF0000', label="2-Sigma-Ellipse") plot_covariance_ellipse(mu, Sigma, ax, n_std=3.0, color='#800000', label="3-Sigma-Ellipse") # Achsen und Legende ax.set_xlabel("x") ax.set_ylabel("y") ax.legend() plt.title("2D-Normalverteilung mit Kovarianzellipse") plt.show()