Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| lehrkraefte:blc:math-2021hw:doppelspalt [2025/02/10 13:35] – created Ivo Blöchliger | lehrkraefte:blc:math-2021hw:doppelspalt [2025/02/24 07:50] (current) – [Überlagerung zweier Schwingungen gleicher Frequenz] Ivo Blöchliger | ||
|---|---|---|---|
| Line 14: | Line 14: | ||
| * Fixe Nullphase $\varphi_0 = 0$. | * Fixe Nullphase $\varphi_0 = 0$. | ||
| * Wellenlänge $\lambda=10$ (in Pixel) | * Wellenlänge $\lambda=10$ (in Pixel) | ||
| + | * Amplitude 1 | ||
| === Auslenkung zur Zeit $t$ and Stelle $(x,y)$ === | === Auslenkung zur Zeit $t$ and Stelle $(x,y)$ === | ||
| Line 20: | Line 21: | ||
| Ziel ist es die Auslenkung $y(x,y,t)$ am Punkt $(x,y)$ zur Zeit $t$ zu bestimmen. | Ziel ist es die Auslenkung $y(x,y,t)$ am Punkt $(x,y)$ zur Zeit $t$ zu bestimmen. | ||
| * Bestimmen Sie erst mal die Funktion $y(p_x, p_y, t)$, d.h. die Auslenkung an der Punktquelle | * Bestimmen Sie erst mal die Funktion $y(p_x, p_y, t)$, d.h. die Auslenkung an der Punktquelle | ||
| + | < | ||
| + | \[ | ||
| + | y(t) = \sin(t \cdot 2 \pi) | ||
| + | \] | ||
| + | </ | ||
| * Für einen beliebigen Punkt $P=(x,y)$ gehen Sie wie folgt vor: | * Für einen beliebigen Punkt $P=(x,y)$ gehen Sie wie folgt vor: | ||
| * Bestimmen Sie die Distanz zu $P_0$. | * Bestimmen Sie die Distanz zu $P_0$. | ||
| * Aus der Wellenlänge, | * Aus der Wellenlänge, | ||
| * Bestimmen Sie damit $y(x,y,t)$. | * Bestimmen Sie damit $y(x,y,t)$. | ||
| + | < | ||
| + | Distanz: $d = \sqrt{(x-p_x)^2+(y-p_y)^2}$ | ||
| + | |||
| + | Zeit: Pro Umdrehung eine Wellenlänge $\lambda$, also $\Delta t = \frac{d}{\lambda}$ | ||
| + | |||
| + | $y(x,y,t)$ hat eine «Verspätung» von $\Delta t$, also $y(x,y,t) = \sin(t\cdot 2\pi - \Delta t)$ | ||
| + | </ | ||
| Line 30: | Line 43: | ||
| * {{lehrkraefte: | * {{lehrkraefte: | ||
| - | Auf der Kommandozeile, | + | Laden Sie beide Dateien in ein neues Verzeichnis. |
| + | |||
| + | Öffnen Sie dieses Verzeichnis mit Visual Studio Code. | ||
| + | |||
| + | Starten Sie die Datei ' | ||
| + | |||
| + | Oder auf der Kommandozeile, | ||
| <code bash> | <code bash> | ||
| python kreis.py | python kreis.py | ||
| </ | </ | ||
| + | und erstellen Sie dann mit ffmpeg (siehe Output) die Animation, die Sie mit einem Browser anschauen können. | ||
| + | |||
| + | === Punktwelle darstellen === | ||
| + | |||
| + | Öffnen Sie das Verzeichnis Visual Studio Code und fügen der Datei '' | ||
| + | <code python> | ||
| + | wlang = 10 # Wellenlänge in Pixeln (lambda ist ein reserviertes keyword in python) | ||
| + | def auslenkung(px, | ||
| + | # Auslenkung a im Punkt (x,y) zur Zeit t berechnen | ||
| + | a = 1 # TODO Berechnung einfügen | ||
| + | return a | ||
| + | | ||
| + | def farbe(x, | ||
| + | # Punktequelle in der Mitte | ||
| + | a = auslenkung(w/ | ||
| + | # TODO a in den Bereich [0,1] umrechnen | ||
| + | | ||
| + | # Graustufe | ||
| + | return [int(a*255), | ||
| + | </ | ||
| + | |||
| + | Vervollständigen Sie die Funktionen und ändern Sie unten im Hauptprogramm den Funktionsaufruf von '' | ||
| + | |||
| + | |||
| + | Für grössere Animationen können Sie eine .mp4 anstatt einer .gif Datei generieren. Passen Sie die Kommandozeil mit '' | ||
| + | ==== Mehrere Punktquellen ==== | ||
| + | Ändern Sie die Funktion '' | ||
| + | |||
| + | |||
| + | ===== Farbcodierte Amplitude ===== | ||
| + | ==== Überlagerung zweier Schwingungen gleicher Frequenz ==== | ||
| + | Gegeben sind zwei Schwingungen gleicher Frequenz mit Amplituden $a_1$ und $a_2$ und Nullphasen $\varphi_1$ und $\varphi_2$. | ||
| + | |||
| + | Ziel ist es, die Amplitude und Nullphase der Summe beider Schwingungen zu berechnen. | ||
| + | |||
| + | === Drehende Vektoren (Zeiger) === | ||
| + | Für dieses Problem ist sehr nützlich, Schwingungen als Projektion einer Kreisbewegung zu betrachten, genauer als die $y$-Koordinate eines drehenden Vektors (Zeigers) um den Ursprung. | ||
| + | Die Länge des Vektors entspricht der Amplitude, die Nullphase ist der orientierte Winkel, die der Vektor zur Zeit $t=0$ einschliesst. | ||
| + | |||
| + | Weil die zu überlagernden Schwingungen die gleiche Frequenz haben, bleibt der Winkel zwischen beiden Vektoren (Zeigern) konstant. Es reicht darum, die Situation zum Zeitpunkt $t=0$ zu betrachten. Das hat ausserdem den Vorteil, dass die Nullphase $\varphi$ der Überlagung so gleich ersichtlich ist. | ||
| + | |||
| + | Seien $\vec{v_1}$ und $\vec{v_2}$ die Vektoren der beiden Schwingungen zum Zeitpunkt $t=0$. Dann ist der entsprechende Vektor der Überlagerung $\vec{v} = \vec{v_1}+\vec{v_2}$. Von diesem Vektor entspricht die Länge $a$ der Amplitude der Überlagerung, | ||
| + | |||
| + | Die Komponenten der Vektoren $\vec{v_1}$ und $\vec{v_2}$ können wie folgt aufgeschrieben werden: | ||
| + | < | ||
| + | [\ | ||
| + | | ||
| + | | ||
| + | | ||
| + | \] | ||
| + | </ | ||
| + | |||
| + | Daraus folgt die Summe $\vec{v} = \vec{v_1}+\vec{v_2}$ und $a=\vec{v}$. | ||
| + | |||
| + | === Berechnung der Nullphase, «Winkel von $\vec{v}$» === | ||
| + | Wir suchen einen Winkel in $[0, 2\pi]$ (oder in $[-\pi, \pi]$). Aber auf jeden Fall auf dem ganzen Vollkreis. Alle Arcus-Funktionen liefern aber nur Winkel auf einem Intervall der Länge $\pi$ ($180^\circ$). | ||
| + | |||
| + | Es ist sind also Fallunterscheidungen nötig. | ||
| + | |||
| + | < | ||
| + | Da die Bestimmung des orientierten Winkel eines Vektors gegenüber der $x$-Achse ein häufiges Problem ist, gibt es in den meisten Programmiersprachen (und auch direkt in Hardware) die Funktion | ||
| + | \[ | ||
| + | | ||
| + | \] | ||
| + | In Python | ||
| + | <code python> | ||
| + | phi = math.atan2(y, | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | <code python> | ||
| + | def ueberlagerung(phi1, | ||
| + | v1x = math.cos(phi1)*a1 | ||
| + | v1y = math.sin(phi1)*a1 | ||
| + | v2x = math.cos(phi2)*a2 | ||
| + | v2y = math.sin(phi2)*a2 | ||
| + | vx = v1x+v2x | ||
| + | vy = v1y+v2y | ||
| + | a = math.sqrt(vx*vx+vy*vy) | ||
| + | phi = math.atan(vy, | ||
| + | return a,phi | ||
| + | </ | ||
| + | |||
| + | === HSV-Farbmodell === | ||
| + | https:// | ||
| + | |||
| + | * **H**: Hue in $[0,1]$ (oft auch $0^\circ$ bis $360^\circ$, | ||
| + | * **S**: Saturation in $[0,1]$, $0$ wäre Grau, $1$ Voll gesättigte Farbe | ||
| + | * **V**: Value in $[0,1]$: Helligkeit ($0$ ist Schwarz, $1$ volle Helligkeit). | ||
| + | |||
| + | |||