Besenstiel -- Gruppe306

Der Versuch wurde durchgeführt von: Henrik Martens und Jonas Musall
Die Wiki-Seite wurde angelegt am: 18 December 2020 11:39

Implementierung der numerischen Lösung mit Mathematica

Auch wenn in Mathematica bereits der Befehl NDSolve existiert, der eine DGL numerisch löst, kann selbstverständlich auch ein eigenes Verfahren implementiert werden. Die dafür zuständige Methode ist “solDiff”, welche als Input die Länge l, die Anfangswerte φ0 und φ'0, den Zeitraum, sowie die Intervallgröße verlangt. Dann wird in einer Umgebung mit lokalen Variablen zunächst eine Tabelle erstellt, welche zunächst nur Nullen enthält und der folgenden Form ist:

{{0,0,0,0},{0,0,0,0},...,{0,0,0,0}}  

In diese Tabelle werden dann Zeiten, Winkel, Winkelgeschwindigkeit und Winkelbeschleunigung eingetragen, die zusammen eine numerische Lösung ergeben. Dazu wird in einer For-Schleife die Zeit schrittweise erhöht und für jeden Zeitpunkt der neue Winkel berechnet. Ist dieser irgendwann größer als π/2, wird der Winkel für die restliche Zeit auf π/2 (sowie Geschwindigkeit und Beschleunigung auf 0) gesetzt und die Fallzeit in einer Variablen abgespeichert. Die Funktion gibt dann die Tabelle mit den Punkten sowie die Fallzeit für diese Bewegung zurück.

Um φ(t) und deren Ableitungen zu bekommen, können die Methoden “solphi”, “soldphi” und “solddphi” verwendet werden, welche aus der ausgegebenen Tabelle von “solDiff” die richtigen Werte extrahieren.

Praktikum_Besenstiel.nb
  1. solDiff[l_, phi0_, dphi0_, tmax_, dt_] := Module[{phi = phi0, dphi = dphi0, ddphi = 0, finalList, list = ConstantArray[0, Floor[tmax/dt] + 1], t0, tFall = -1},
  2. finalList = Transpose[{list, list, list, list}];
  3.  
  4. For[t0 = 0, t0 <= tmax, t0 += dt,
  5.  
  6. finalList[[t0/dt + 1, 4]] = ddphi;
  7. finalList[[t0/dt + 1, 3]] = dphi;
  8. finalList[[t0/dt + 1, 2]] = phi;
  9. finalList[[t0/dt + 1, 1]] = t0;
  10.  
  11. If[phi >= Pi/2,
  12. If[tFall == -1, tFall = t0];
  13. phi = Pi/2; dphi = 0;ddphi = 0;,
  14.  
  15. ddphi = Sin[phi]/((2*l)/(3*9.81));
  16. dphi += dt*ddphi;
  17. phi += dt*dphi;]
  18. ];
  19. {finalList, tFall}
  20. ]
  21.  
  22. solphi[l_, phi0_, dphi0_, tmax_, dt_] := Transpose[{solDiff[l, phi0, dphi0, tmax, dt][[1, All, 1]], solDiff[l, phi0, dphi0, tmax, dt][[1, All, 2]]}]
  23.  
  24. soldphi[l_, phi0_, dphi0_, tmax_, dt_] := Transpose[{solDiff[l, phi0, dphi0, tmax, dt][[1, All, 1]], solDiff[l, phi0, dphi0, tmax, dt][[1, All, 3]]}]
  25.  
  26. solddphi[l_, phi0_, dphi0_, tmax_, dt_] := Transpose[{solDiff[l, phi0, dphi0, tmax, dt][[1, All, 1]], solDiff[l, phi0, dphi0, tmax, dt][[1, All, 4]]}]

Aufnahme der Trajektorien per Videoanalyse

Um die praktisch durchgeführten Versuche auszuwerten, wurde der umfallende Besenstiel auf Video aufgenommen. Der Winkel kann dann durch Tracken eines auf dem Stiel angebrachten Markers in Blender (GPL-lizensierte 3D Suite, die auch zur Videoanalyse genutzt werden kann) und der bekannten Position des Auflagepunktes errechnet werden. Zusätzlich wurde aus dem Videobild errechnet welcher Winkel die Kamera zur Waagerechten hatte.

Im Folgenden Bilder und ein Video des Versuchsaufbaus, sowie ein Screenshot aus dem Analyseprozess in Blender.

Die Positionen der Marker wurden mithilfe eines Python-Skriptes in Tabellen exportiert.

  1. import bpy
  2. D = bpy.data
  3.  
  4. clip = D.movieclips[0]
  5. for track in clip.tracking.tracks:
  6. fn = 'C:/Users/Jonas/Downloads/export/{0}.csv'.format(track.name)
  7. with open(fn, 'w') as f:
  8. frameno = bpy.context.scene.frame_start
  9. while True:
  10. markerAtFrame = track.markers.find_frame(frameno)
  11. if not markerAtFrame:
  12. break
  13. frameno += 1
  14. coords = markerAtFrame.co.xy
  15. f.write('{0},{1}\n'.format(coords[0], coords[1]))

Messwerte

Langer Stiel, L = (1.3050±0.0005)m

φ₀ in Grad T in s
10.0 ± 0.3 0.205 ± 0.011
21.25 ± 0.16 0.293 ± 0.011
41.9 ± 0.4 0.417 ± 0.011
60.09 ± 0.11 0.557 ± 0.011
74.07 ± 0.15 0.732 ± 0.011

Kurzer Stiel, L = (0.3750 ± 0.0005)m

φ₀ in Grad T in s
26.9 ± 0.4 0.188 ± 0.011
39.2 ± 0.4 0.212 ± 0.011
54.2 ± 0.5 0.263 ± 0.011
69.6 ± 0.7 0.363 ± 0.011
81.4 ± 0.8 0.510 ± 0.011

Erhöhter Luftwiderstand, kurzer Stiel

φ₀ in Grad T in s
38.7 ± 1.0 0.232 ± 0.011
66.9 ± 0.7 0.360 ± 0.011
You could leave a comment if you were logged in.