File:Driven-pendulums-resonance-animation.gif
Driven-pendulums-resonance-animation.gif (220 × 136 Pixel, Dateigröße: 120 KB, MIME-Typ: image/gif, Endlosschleife, 100 Bilder, 4,0 s)
Bildtexte
Beschreibung[Bearbeiten]
BeschreibungDriven-pendulums-resonance-animation.gif |
English: Animation of three identical pendulums of resonance frequency ω0 and damping D=0.05. The pendulums are driven with the same strength, but different driving frequencies ω:
|
Datum | |
Quelle |
Eigenes Werk Dieser Plot wurde mit Matplotlib erstellt. |
Urheber | Geek3 |
Source Code[Bearbeiten]
The plot was generated with Python Matplotlib.
Python Matplotlib source code |
---|
#!/usr/bin/python
# -*- coding: utf8 -*-
import os
import inspect
from math import *
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib import animation
# settings
mpl.rcParams['path.snap'] = False
fname = 'driven-pendulums-resonance-animation'
size = 220, 136
nframes = 100
susp = 16
f0 = 3.0
pendulums = [
{'x0':29, 'y0':117.5, 'f':2.0, 'A':4, 'D':0.05, 'l':89, 'phi0':0.},
{'x0':110, 'y0':117.5, 'f':3.0, 'A':4, 'D':0.05, 'l':89, 'phi0':0.},
{'x0':191, 'y0':117.5, 'f':4.0, 'A':4, 'D':0.05, 'l':89, 'phi0':0.}]
for p in pendulums:
D = p['D']
eta = p['f'] / f0
# use harmonic approximation
p['Arel'] = 1.0 / sqrt((1. - eta**2)**2 + (2.*eta*D)**2)
p['Phaserel'] = atan2(2 * eta * D, 1.0 - eta**2)
def animate(nframe, saveframes=False):
print nframe, nframes
t = float(nframe) / nframes
plt.clf()
fig.gca().set_position((0, 0, 1, 1))
plt.xlim(0, size[0])
plt.ylim(0, size[1])
plt.axis('off')
for p in pendulums:
dxSusp = p['A'] * sin(p['phi0'] + 2*pi*p['f']*t)
dsPend = p['A'] * sin(p['phi0'] + 2*pi*p['f']*t - p['Phaserel']) * p['Arel']
PhiPend = (dsPend - dxSusp) / p['l']
dxPend = dxSusp + p['l'] * sin(PhiPend)
dyPend = -p['l'] * cos(PhiPend)
xSusp = p['x0'] + dxSusp
xPend = p['x0'] + dxPend
yPend = p['y0'] + dyPend
# draw pendulum
s = 0.72
plt.plot([p['x0'] - susp, p['x0'] + susp],
[p['y0'], p['y0']], '-k', lw=3)
plt.plot([xSusp, xPend], [p['y0'], yPend], '-k', lw=1.5)
plt.plot([xSusp], [p['y0']], '.k', markersize=12)
plt.plot([xPend], [yPend], 'o', color='#aaaaaa',
markersize=14, markeredgewidth=1.5)
if saveframes:
# export frame
dig = int(ceil(log10(nframes)))
fsavename = ('frame{:0' + str(dig) + '}.svg').format(nframe)
fig.savefig(fsavename)
with open(fsavename) as f: content = f.read()
content = content.replace('pt"', 'px"').replace('pt"', 'px"')
with open(fsavename, 'w') as f: f.write(content)
fig = plt.figure(figsize=(size[0]/72., size[1]/72.))
#anim = animation.FuncAnimation(fig, animate, frames=nframes)
#anim.save(fname + '.gif', writer='imagemagick', fps=25)
# use imagemagick on svgs rather than builtin imagemagick support
# this avoids snapping and offers some custom settings
os.chdir(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))))
for i in range(nframes):
animate(i, True)
os.system('convert -loop 0 -delay 4 frame*.svg +dither -posterize 16 ' + fname + '.gif')
for i in os.listdir('.'):
if i.startswith('frame') and i.endswith('.svg'):
os.remove(i)
|
Lizenz[Bearbeiten]
Es ist erlaubt, die Datei unter den Bedingungen der GNU-Lizenz für freie Dokumentation, Version 1.2 oder einer späteren Version, veröffentlicht von der Free Software Foundation, zu kopieren, zu verbreiten und/oder zu modifizieren; es gibt keine unveränderlichen Abschnitte, keinen vorderen und keinen hinteren Umschlagtext.
Der vollständige Text der Lizenz ist im Kapitel GNU-Lizenz für freie Dokumentation verfügbar.http://www.gnu.org/copyleft/fdl.htmlGFDLGNU Free Documentation Licensetruetrue |
- Dieses Werk darf von dir
- verbreitet werden – vervielfältigt, verbreitet und öffentlich zugänglich gemacht werden
- neu zusammengestellt werden – abgewandelt und bearbeitet werden
- Zu den folgenden Bedingungen:
- Namensnennung – Du musst angemessene Urheber- und Rechteangaben machen, einen Link zur Lizenz beifügen und angeben, ob Änderungen vorgenommen wurden. Diese Angaben dürfen in jeder angemessenen Art und Weise gemacht werden, allerdings nicht so, dass der Eindruck entsteht, der Lizenzgeber unterstütze gerade dich oder deine Nutzung besonders.
Dateiversionen
Klicke auf einen Zeitpunkt, um diese Version zu laden.
Version vom | Vorschaubild | Maße | Benutzer | Kommentar | |
---|---|---|---|---|---|
aktuell | 21:08, 10. Apr. 2016 | 220 × 136 (120 KB) | Geek3 (Diskussion | Beiträge) | smaller drive amplitude | |
20:57, 10. Apr. 2016 | 220 × 136 (121 KB) | Geek3 (Diskussion | Beiträge) | {{Information |Description ={{en|1=Animation of three identical pendulums of resonance frequency ''ω''<sub>0</sub> and damping ''D''=0.1. The pendulums are driven with the sam... |
Du kannst diese Datei nicht überschreiben.
Dateiverwendung
Die folgenden 2 Seiten verwenden diese Datei:
Globale Dateiverwendung
Die nachfolgenden anderen Wikis verwenden diese Datei:
- Verwendung auf cv.wikipedia.org
- Verwendung auf de.wikipedia.org
- Verwendung auf de.wikibooks.org
- Verwendung auf zh-yue.wikipedia.org
Metadaten
Diese Datei enthält weitere Informationen, die in der Regel von der Digitalkamera oder dem verwendeten Scanner stammen. Durch nachträgliche Bearbeitung der Originaldatei können einige Details verändert worden sein.
GIF-Dateikommentar | https://commons.wikimedia.org/wiki/File:Driven-pendulums-resonance-animation.gif |
---|