meta data for this page
  •  

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
a_mechanik:kippender_besenstiel:gruppenseiten:gruppe341:start [ 8 January 2021 17:33] alexanderstedinga_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="true"] Besenstiel.py>  <code python [enable_line_numbers="true"] Besenstiel.py> 
 import math import math
-# Voreinstellungen +import numpy as np 
-Anfangsbeschleunigung= 9.81 # Beschleunigung zum Zeitpunkt t=0 in m/s^2 +import matplotlib.pyplot as plt 
-Anfangsgeschwindigkeit = 0 # Geschwindigkeit zum Zeitpunkt t=0 in m/s +############### Voreinstellungen ############### 
-Meta=[] # Liste in der die Berechneten Fallzeiten gespeichert werden+Erdbeschleunigung= 9.81 Erdbeschleunigung in m/s^2 
 +Meta=[] # Liste in der die Berechneten Fallzeiten gespeichert werden 
 +winkelliste=[] 
 +Berechnungswinkel=0.05 
 +while  Berechnungswinkel <= 1.51: 
 +  winkelliste.append(format(Berechnungswinkel,'.3g')) 
 +  Berechnungswinkel += 0.01 
 +Winkelliste=list(map(float, winkelliste))
  
-#Nutzereingabe+############### Nutzereingabe ###############
 print("Bitte Stablänge in Metern angeben") print("Bitte Stablänge in Metern angeben")
 Stablänge = float(input("Stablänge:")) # Länge des Stabes in Metern Stablänge = float(input("Stablänge:")) # Länge des Stabes in Metern
 print("Bitte Zeitschritt in Sekunden angeben") print("Bitte Zeitschritt in Sekunden angeben")
 Zeitschritt =float(input("Zeitschritt:")) # Zeitschritt in Sekunden Zeitschritt =float(input("Zeitschritt:")) # Zeitschritt in Sekunden
-Tau= math.sqrt((2*Stablänge)/(3*Anfangsbeschleunigung)) # Berechnung von Tau+############### Berechnungen ############### 
 +Tau= math.sqrt((2*Stablänge)/(3*Erdbeschleunigung)) # Berechnung von Tau 
 +for Winkel in Winkelliste: 
 +  listewes=[] 
 +  Momentanwinkel=Winkel 
 +  Momentangeschwindigkeit=0 
 +  while Momentanwinkel <=math.pi/2 : #Berechnung der Winkel 
 +    Beschleunigung= math.sin(Momentanwinkel)/(Tau**2) 
 +    Geschwindigkeit= Momentangeschwindigkeit + Zeitschritt*Beschleunigung 
 +    neuerwinkel= Momentanwinkel + Zeitschritt*Geschwindigkeit 
 +    listewes.append(neuerwinkel) 
 +    Momentanwinkel=neuerwinkel 
 +    Momentangeschwindigkeit=Geschwindigkeit
  
-print("Anzahl an berechneten Winkeln?(1 oder 5)") +  k=format((len(listewes))*Zeitschritt, '.3g'# Berechnung der Fallzeit t und Vermeidung des Floating Point Errors durch Signifikante Stellen 
-wahl= input("Anzahl"+  Meta.append(k#Einhängen der Fallzeiten in die Liste Meta 
-wahlf= float(wahl+   
-if wahlf<=1: +############### Ausgabe der Werte ####################    
- print("Bitte Winkel in Radiant eingeben") +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 input("Winkel:"+datafile_path 'fallzeiten'+'_'+str(Stablänge)+'_'+str(Zeitschritt)+'.txt'# Dateispeicherort 
- Anfangswinkellistenamen=[Winkeleins] +with open(datafile_path, 'w+'as datafile_id: 
-else : +  np.savetxt(datafile_id, data, fmt=['%.2f','%.2f']) #Schreiben der Daten in Textdatei 
- print("Bitte Winkel in Radiant eingeben") +     
- Winkeleins = input("Erster Winkel:") +############### Ploten der Werte #################### 
- Winkelzwei = input("Zweiter Winkel:") +xstart0 
- Winkeldrei = input("Dritter Winkel:"+xend 1.6 
- Winkelvier input("Vierter Winkel:"+xticks0.05 
- Winkelfünf = input("Fünfter Winkel:"+ystart0 
- Anfangswinkellistenamen=[Winkeleins,Winkelzwei, Winkeldrei, Winkelvier, Winkelfünf] +yend1.5 
-  +plt.figure(figsize=(20,10), dpi=100) 
-Anfangswinkelliste= list(map(float,Anfangswinkellistenamen)) #Gemessene Winkel in Radiant +plt.grid(True,zorder=0) 
- +plt.axis([xstart,xend,ystart,yend]
-#Berechnungen +plt.title('Numerische Berechnung der Fallzeiten für verschiedene Startwinkel mit l='+str(Stablänge)+'m und'+' \u0394'+'t='+str(Zeitschritt)+'s'             Titel des Plot 
-for Anfangswinkel in Anfangswinkelliste: for Schleife die für jeden Anfangswinkel die Fallzeit berechnet +plt.xticks(np.arange(xstart,xend,xticks)
-    Startbeschleuni= math.sin(Anfangswinkel)/Tau**2 Erster Iterationsschritt +a=plt.scatter(Winkelliste,list(map(float, Meta)),zorder=3) 
-    StartgeschwendiAnfangsgeschwindigkeit +Zeitschritt * Startbeschleuni  +plt.legend([a],['Fallzeiten']) # legende 
-    Startwinkel Anfangswinkel + Zeitschritt *Startgeschwendi +plt.xlabel('Startwinkel in Radiant'                             x-axis label 
-    WinkeltStartwinkel +plt.ylabel('Fallzeiten in S'                             y-axis label 
-    gestStartgeschwendi +plt.savefig('graph'+'_'+str(Stablänge)+'_'+str(Zeitschritt)+'.png'      # Speichern des Plot als Png 
-    listebes=[Startbeschleuni] +plt.close
-    listeges=[Startgeschwendi] +
-    listewes=[] +
-    b=Zeitschritt +
- +
-    while Winkelt  <=math.pi/2 : #while Schleifewelche die weiteren Iterationschritte bis der Erdboden ereicht ist(90°berechnet +
-        bes=math.sin(Winkelt)/(Tau**2) # Berechnung der Winkelbschleunigung +
-        listebes.append(bes) +
-        gesgest b*bes #Berechnen der Winkelgeschwindigkeit +
-        listeges.append(ges) +
-        wes= Winkelt b*ges Berechnen des Winkel +
-        listewes.append(wes+
-        Winkelt=wes +
-        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,nextitem in zip(Meta, Anfangswinkelliste)Ausgabe der Berechneten Startzeiten +
- print('Die Fallzeit für den Startwinkel',nextitem,'Radiant beträgt', item, 'Sekunden')+
 </code> </code>
 ===== Ü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.
 +
 +{{ :a_mechanik:kippender_besenstiel:gruppenseiten:gruppe341:winkel_1.45_0.01.png |}}
 +
 +
 ====== Dokumentation von Fehlern ====== ====== Dokumentation von Fehlern ======
 Ein häufig aufgetauchter systematischer Messfehler, liegt in der gedämpften Schwingung des Besenstiels, nach Auftreffen am Boden. Das nachfolgende Video in Zeitlupe veranschaulicht das wiederholte Aufteffen auf den Boden. Ein häufig aufgetauchter systematischer Messfehler, liegt in der gedämpften Schwingung des Besenstiels, nach Auftreffen am Boden. Das nachfolgende Video in Zeitlupe veranschaulicht das wiederholte Aufteffen auf den Boden.
Line 233: Line 237:
  
 Die dadurch zusätzlich entstehenden Schallwellen interferieren und stören die Messung. Um solchen Effekten vorzubeugen, wurde in der App Phyphox der Wert für Schwelle von 0,1 auf 0,3 a.u. erhöht. Dadurch können Hall-Effekte und andere akustische Probleme herausgefiltert werden. Die dadurch zusätzlich entstehenden Schallwellen interferieren und stören die Messung. Um solchen Effekten vorzubeugen, wurde in der App Phyphox der Wert für Schwelle von 0,1 auf 0,3 a.u. erhöht. Dadurch können Hall-Effekte und andere akustische Probleme herausgefiltert werden.
-===== Syntax und Funktionen im Wiki =====  +
-Hier noch Links zu +
-  * den [[doku>de:wiki:syntax|Grundbefehlen von Dokuwiki]], +
-  * [[:wiki:apwiki_features|lokal installierten Erweiterungen]] und +
-  * [[:wiki:advanced_user_hints|noch mehr lokal installierte Erweiterungen]]+