meta data for this page
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
a_mechanik:kippender_besenstiel:gruppenseiten:gruppe341:start [ 8 January 2021 17:33] – alexandersteding | a_mechanik:kippender_besenstiel:gruppenseiten:gruppe341:start [22 January 2021 13:18] (current) – [Computerprogramm] alexandersteding | ||
---|---|---|---|
Line 162: | Line 162: | ||
====== Computerprogramm ====== | ====== Computerprogramm ====== | ||
- | Für die numerische Berechnung der Bewegunsgleichung wurde der folgende Code in Python geschrieben. | + | Für die numerische Berechnung der Bewegunsgleichung wurde der folgende Code in Python geschrieben. In der überarbeiteten Fassung berechnet er für alle Winkel im Intervall [0,05;1,5] Radiant die Fallzeiten. Die Daten werden automatisch als Plot und formatierte Textdatei zur weiteren Verwendung(z.B. QTIPlot) gespeichert. |
<code python [enable_line_numbers=" | <code python [enable_line_numbers=" | ||
import math | import math | ||
- | # Voreinstellungen | + | import numpy as np |
- | Anfangsbeschleunigung= 9.81 # | + | import matplotlib.pyplot as plt |
- | Anfangsgeschwindigkeit = 0 # Geschwindigkeit zum Zeitpunkt t=0 in m/s | + | ############## |
- | Meta=[] # Liste in der die Berechneten Fallzeiten gespeichert werden | + | Erdbeschleunigung= 9.81 # Erdbeschleunigung |
+ | Meta=[] # Liste in der die Berechneten Fallzeiten gespeichert werden | ||
+ | winkelliste=[] | ||
+ | Berechnungswinkel=0.05 | ||
+ | while Berechnungswinkel <= 1.51: | ||
+ | winkelliste.append(format(Berechnungswinkel,' | ||
+ | Berechnungswinkel += 0.01 | ||
+ | Winkelliste=list(map(float, | ||
- | # | + | ############## |
print(" | print(" | ||
Stablänge = float(input(" | Stablänge = float(input(" | ||
print(" | print(" | ||
Zeitschritt =float(input(" | Zeitschritt =float(input(" | ||
- | Tau= math.sqrt((2*Stablänge)/ | + | ############### |
+ | Tau= math.sqrt((2*Stablänge)/ | ||
+ | for Winkel in Winkelliste: | ||
+ | listewes=[] | ||
+ | Momentanwinkel=Winkel | ||
+ | Momentangeschwindigkeit=0 | ||
+ | while Momentanwinkel < | ||
+ | Beschleunigung= math.sin(Momentanwinkel)/ | ||
+ | Geschwindigkeit= Momentangeschwindigkeit + Zeitschritt*Beschleunigung | ||
+ | neuerwinkel= Momentanwinkel + Zeitschritt*Geschwindigkeit | ||
+ | listewes.append(neuerwinkel) | ||
+ | Momentanwinkel=neuerwinkel | ||
+ | Momentangeschwindigkeit=Geschwindigkeit | ||
- | print(" | + | k=format((len(listewes))*Zeitschritt, |
- | wahl= input(" | + | |
- | wahlf= float(wahl) | + | |
- | if wahlf< | + | ############### |
- | print(" | + | data = np.array([np.array(Winkelliste).astype(np.float) , np.array(Meta).astype(np.float) ]).T #Umwandeln der Winkel und Fallzeiten in ein Array und Transponieren der Daten |
- | Winkeleins | + | datafile_path |
- | | + | with open(datafile_path, |
- | else : | + | |
- | print("Bitte Winkel in Radiant eingeben" | + | |
- | | + | ############### |
- | | + | xstart= 0 |
- | | + | xend= 1.6 |
- | Winkelvier | + | xticks= 0.05 |
- | Winkelfünf = input(" | + | ystart= 0 |
- | Anfangswinkellistenamen=[Winkeleins,Winkelzwei, Winkeldrei, Winkelvier, Winkelfünf] | + | yend= 1.5 |
- | + | plt.figure(figsize=(20,10), dpi=100) | |
- | Anfangswinkelliste= list(map(float, | + | plt.grid(True, |
- | + | plt.axis([xstart,xend, | |
- | #Berechnungen | + | plt.title(' |
- | for Anfangswinkel in Anfangswinkelliste: | + | plt.xticks(np.arange(xstart, |
- | Startbeschleuni= math.sin(Anfangswinkel)/ | + | a=plt.scatter(Winkelliste, |
- | | + | plt.legend([a], |
- | | + | plt.xlabel(' |
- | | + | plt.ylabel(' |
- | gest= Startgeschwendi | + | plt.savefig('graph'+'_'+str(Stablänge)+'_'+str(Zeitschritt)+' |
- | | + | plt.close |
- | | + | |
- | listewes=[] | + | |
- | b=Zeitschritt | + | |
- | + | ||
- | while Winkelt | + | |
- | | + | |
- | listebes.append(bes) | + | |
- | ges= gest + b*bes # | + | |
- | listeges.append(ges) | + | |
- | wes= Winkelt | + | |
- | | + | |
- | | + | |
- | gest=ges | + | |
- | + | ||
- | k=format((len(listewes))*Zeitschritt, '.3g') # Berechnung der Fallzeit t und Vermeidung des Floating Point Errors durch Signifikante Stellen | + | |
- | Meta.append(k) #Einhängen der Fallzeiten in die Liste Meta | + | |
- | + | ||
- | for item, | + | |
- | print('Die Fallzeit für den Startwinkel',nextitem,'Radiant beträgt', item, 'Sekunden') | + | |
</ | </ | ||
===== Überprüfung des Code===== | ===== Überprüfung des Code===== | ||
Um den Code zu verifizieren wird die Fallzeit bei einer Stablänge von 1.45 m bei einem Startwinkel von 0.25 rad und einem Zeitschritt von 0.01 s berechnet. Diese beträgt 0.8 Sekunden. Der Vergleich mit der Grafik aus der Aufgabenstellung bestätigt die Berechnung. | Um den Code zu verifizieren wird die Fallzeit bei einer Stablänge von 1.45 m bei einem Startwinkel von 0.25 rad und einem Zeitschritt von 0.01 s berechnet. Diese beträgt 0.8 Sekunden. Der Vergleich mit der Grafik aus der Aufgabenstellung bestätigt die Berechnung. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
====== Dokumentation von Fehlern ====== | ====== Dokumentation von Fehlern ====== | ||
Ein häufig aufgetauchter systematischer Messfehler, liegt in der gedämpften Schwingung des Besenstiels, | Ein häufig aufgetauchter systematischer Messfehler, liegt in der gedämpften Schwingung des Besenstiels, | ||
Line 233: | Line 237: | ||
Die dadurch zusätzlich entstehenden Schallwellen interferieren und stören die Messung. Um solchen Effekten vorzubeugen, | Die dadurch zusätzlich entstehenden Schallwellen interferieren und stören die Messung. Um solchen Effekten vorzubeugen, | ||
- | ===== Syntax und Funktionen im Wiki ===== | + | |
- | Hier noch Links zu | + | |
- | * den [[doku> | + | |
- | * [[: | + | |
- | * [[: | + | |