Seite 1 von 1

Liniendiagramm mit Unsicherheiten

Verfasst: Samstag 19. November 2022, 14:19
von Apfelstruedel
Hallo,

für mein Physikpraktikum soll ich ein Liniendiagramm aus meinen gemessenen Daten erstellen. Im coden hab ich leider nicht viel Erfahrung und bin ein wenig am Verzweifeln, weil mein Code nicht funktioniert und ich habe keine Ahnung, wie ich das korrigieren soll.
Hoffenltich könnt ihr mit weiterhelfen.

Code: Alles auswählen

import matplotlib.pyplot as plt
import numpy as np
from scipy.optimize import curve_fit
import pandas as pd

#########################
# lineare Funktion zur Anpassung [durch Ihre Funktion ersetzen]
#########################

def func(x,a,b):
return a * x + b

#########################
# Listen für Daten auswerten
#########################

df = pd.read_csv("Daten.txt", sep=" ", decimal=",")

x = np.array(df['x'].to_list(),dtype = float)
y = np.array(df['y'].to_list(),dtype = float)
y_unsicherheit = np.array(df['y_unsicherheit'].to_list(),dtype = float)


#########################
# Fit
#########################

popt, pcov = curve_fit(func, xdata = x, ydata = y)

# Drucken der Anpassungsergebnisse
print("\nOptimale Werte für die Parameter", popt)
print("Die geschätzte Kovarianz von popt.\n", pcov)

# Drucken der angepassten Ergebnisse
print("\nPassungsfunktion: y = a*x + b")
print("Ergebnisse:")
print("a = %f +/- %f"%(popt[0],np.sqrt(pcov[0][0])))
print("b = %f +/- %f"%(popt[1],np.sqrt(pcov[1][1])))

#########################
# Daten und Anpassungsergebnisse darstellen
#########################

plt.plot(x,y)
# Plotten Sie das Anpassungsergebnis
#[Ersetzen Sie die Beschriftung entsprechend Ihrer Anpassungsfunktion].
plt.plot(x, func(x, *popt), 'g--', label='Fit')

plt.xlabel("x")
plt.ylabel("y")
plt.legend()
plt.show()
Bei return wird mir eine Fehlermeldung angezeigt.
Das sind folgende Daten aus der Daten.txt Datei:
x y y_unsicherheit
404.66 1.708 1.03
407.78 1.701 1.03
453.85 1.688 1.03
491.6 1.667 1.03
546.07 1.66 1.03
576.96 1.658 1.03
579.07 1.657 1.03
690.72 1.649 1.03
708.19 1.643 1.03

Ich hoffe, ih könnt mir helfen.
Liebe Grüße

Re: Liniendiagramm mit Unsicherheiten

Verfasst: Samstag 19. November 2022, 14:44
von bwbg
Und diese Fehlermeldung beschreibt auch eindeutig, was dort nicht stimmt.

Re: Liniendiagramm mit Unsicherheiten

Verfasst: Samstag 19. November 2022, 14:52
von Apfelstruedel
Ich hab nur leider keine Ahnung, wie ich die korrigieren kann. Wir haben eine halbstündige Einführung in Python bekommen. Das reicht bei mir leider nicht aus, um die Fehler zu erkennen und dann dementsprechend zu korrigieren...

Re: Liniendiagramm mit Unsicherheiten

Verfasst: Samstag 19. November 2022, 15:01
von Sirius3
Alles was zu einem Block (hier einer Funktion) gehört, muss einheitlich eingerückt sein, das sagt dir die Fehlermeldung

Re: Liniendiagramm mit Unsicherheiten

Verfasst: Samstag 19. November 2022, 15:04
von Apfelstruedel
ok, und wie muss ich das dann jetzt korrekt einrücken, dass ich keine Fehlermeldungmehr bekomme

Re: Liniendiagramm mit Unsicherheiten

Verfasst: Samstag 19. November 2022, 15:11
von Apfelstruedel
Hab's herausgefunden. Vielen Dank :D

Re: Liniendiagramm mit Unsicherheiten

Verfasst: Samstag 19. November 2022, 20:59
von karolus
Zeile 19 bis 21 kannst du einfacher haben:

Code: Alles auswählen

df = pd.read_csv("Daten.txt", sep=" ", decimal=".")

x = df['x']
y = df['y']
y_unsicherheit = df['y_unsicherheit']
Wenn du tatsächlich ( wie in den hier gezeigten Rohdaten ) Dezimalpunkte statt, Dezimalkommas hast, soltest du das in Zeile 17 so angeben, oder weglassen weil Dezimalpunkte ja der Default sind.