# -*- coding: utf-8 -*-
"""
Created on Sat Oct  4 07:41:34 2025

@author: Moritz Romeike
"""

# ------------------------------------------------------------------------
# Programmcode 25 (Python): Stromfluss der Diode in Abhängigkeit von der Temperatur
# ------------------------------------------------------------------------
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# Daten (Temperatur in °C und Strom in mA)
dioden_data = pd.DataFrame({
    "Temperatur": [
        20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0,
        30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0,
        40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0,
        50.0, 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, 58.0, 59.0,
        60.0, 61.0, 62.0, 63.0, 64.0, 65.0, 66.0, 67.0, 68.0, 69.0, 70.0
    ],
    "Strom": [
        0.00, 0.08, 0.02, 0.15, 0.10, 0.20, 0.09, 0.21, 0.29, 0.18,
        0.35, 0.25, 0.38, 0.34, 0.37, 0.47, 0.49, 0.44, 0.54, 0.60,
        0.62, 0.67, 0.71, 0.75, 0.77, 0.82, 0.90, 0.93, 0.95, 1.05,
        1.10, 1.12, 1.15, 1.23, 1.26, 1.35, 1.39, 1.45, 1.52, 1.55,
        1.62, 1.65, 1.71, 1.78, 1.82, 1.88, 1.95, 2.05, 2.11, 2.25, 2.48
    ]
})

# Kovarianz und Korrelation berechnen
kovarianz = np.cov(dioden_data["Temperatur"], dioden_data["Strom"], ddof=1)[0,1]
korrelation = dioden_data["Temperatur"].corr(dioden_data["Strom"])

print("Kovarianz:", round(kovarianz, 4))
print("Korrelation:", round(korrelation, 4))

# Scatterplot erstellen
plt.figure(figsize=(8,6))
plt.scatter(dioden_data["Temperatur"], dioden_data["Strom"], color="blue", label="Messpunkte")

# Regressionsgerade berechnen und einzeichnen
m, b = np.polyfit(dioden_data["Temperatur"], dioden_data["Strom"], 1)
plt.plot(dioden_data["Temperatur"], m*dioden_data["Temperatur"] + b, color="red", linewidth=2, label="Regression")

# Text mit Kovarianz und Korrelation ins Diagramm einfügen
plt.text(25, 2.2, f"Kovarianz: {kovarianz:.4f}", color="darkgreen", fontsize=10)
plt.text(25, 2.0, f"Korrelation: {korrelation:.4f}", color="darkgreen", fontsize=10)

# Achsenbeschriftung und Titel
plt.xlabel("Temperatur (°C)")
plt.ylabel("Strom (mA)")
plt.title("Strom-Temperatur-Beziehung Diode")
plt.grid(True, linestyle="--", alpha=0.6)
plt.legend()
plt.tight_layout()
plt.show()
# ------------------------------------------------------------------------
