[Wissenschaftlich-technische Berechnung von Python] Wellen "Stöhnen" und Gruppengeschwindigkeit, Wellenüberlagerung, Visualisierung, Physik der High School

Einführung

Die Intensität des Geräusches, das gelegentlich in Ihre Ohren gelangt, kann regelmäßig schwanken. Dieses Phänomen heißt ** "beat" ** ing.

Der Ursprung dieses Phänomens liegt am Beispiel einer eindimensionalen Welle. ** Die Wellenfrequenz $ k $ und die Winkelfrequenz $ \ omega $ unterscheiden sich geringfügig. Durch die Überlagerung von zwei in dieselbe Richtung verlaufenden Sinuswellen schwankt die Wellenstärke (Amplitude) langsam und periodisch ** Gibt es.

In einem Medium mit Dispersion Die Winkelfrequenz $ \ omega $ ist eine Funktion von $ k $, und die physikalische Größe, die die Wellenbewegung charakterisiert, ist ** Gruppengeschwindigkeit **. Es ist wichtig, 80% 9F% E5% BA% A6) $ v_g = \ frac {\ partiell \ omega (k)} {\ partiell k} $ zu berücksichtigen. Dies unterscheidet sich von der normalen Wellengeschwindigkeit ** Phasengeschwindigkeit ** $ v_p = \ frac {\ omega} {k} $, die sich durch ein einheitliches Medium bewegt.

** Das Phänomen des Brüllens wird in der Physik der High School gelernt, aber es kann für Schüler schwierig sein, das Phänomen zu erfassen, da sie sich das Auftreten zeitlich variierender Wellen vorstellen müssen. In diesem Artikel erstellen wir daher eine Animation mit der Animationsmethode matplotlib, um das Brummen zu verstehen. ** ** **

** Ich denke, Sie können Ihr Verständnis des Phänomens und der Gruppengeschwindigkeit vertiefen, indem Sie sich nur die im Ergebnis gezeigte Animation ansehen. ** </ font>


Inhalt

(1) Stöhnphänomen, wenn keine Dispergierbarkeit vorliegt. Zu diesem Zeitpunkt stimmen die Phasengeschwindigkeit der Welle und die Gruppengeschwindigkeit überein.

(2) Stöhnphänomen bei Dispergierbarkeit. Die Gruppengeschwindigkeit stimmt nicht mit der Phasengeschwindigkeit überein.

(3) Kombinieren Sie die in (1) und (2) oben erstellten Animationen.


Code (1): Wenn es keine Dezentralisierung gibt


"""
Stöhnendes Phänomen:Keine Dispergierbarkeit

"""

%matplotlib nbagg 
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation


fig = plt.figure(figsize = (8, 6))

L, t_max = 6,12
Nx= 240
Nt = 100

delta_x=L/Nx
delta_t=t_max/Nt
xx=list(range(Nx))

a=1
k1= 2*np.pi/(L/10)
omega1=10
phi1=0

k2= (1+0.15)*k1
omega2=(1+0.15)*omega1
phi2=0

u1=np.zeros([Nx,Nt])
u2=np.zeros([Nx,Nt])
utot=np.zeros([Nx,Nt])


xlis=np.zeros([Nx])

for i in range(Nx):
    x = i*delta_x
    xlis[i] = x
    for j in range(Nt):
        t = j*delta_t
        u1[i,j]=a*np.cos(k1*x-omega1*t-phi1)
        u2[i,j]=a*np.cos(k2*x-omega2*t-phi2)
        utot[i,j]= u1[i,j]+u2[i,j]


def update(j,utot,fig_title):
    if j != 0:
        plt.cla()
    plt.ylim(-3, 3)
    plt.xlim(0, L)
    plt.plot( xlis,u1[:,j],  '--', color='red', linewidth = 1)
    plt.plot( xlis,u2[:,j],  '--', color='blue',linewidth = 1)
    plt.plot( xlis,utot[:,j],  '-', color='purple', linewidth =4)

    plt.title(fig_title  + str("{0:.1f}".format(j*delta_t)))

    plt.xlabel('X')
    plt.ylabel('U')
    plt.legend(['u1','u2', 'u1+u2'], loc='upper right')


ani = animation.FuncAnimation(fig,update,fargs = (utot,'Beat: t ='), interval =1, frames = Nt,blit=False)
fig.show()

ani.save("output.gif", writer="imagemagick")


Ergebnis (1) Keine Dispergierbarkeit

output.gif

Ein Brüllphänomen (ein Phänomen, bei dem die Amplitude der zusammengesetzten Welle periodisch schwankt) wird beobachtet. Zu diesem Zeitpunkt stimmen die Phasengeschwindigkeit und die Gruppengeschwindigkeit überein.

Code (2): Verteilt

Untersuchen Sie, was passiert, wenn heterogene Wellen, dh dispersive Wellen, überlagert werden.

"""
Verteilte Beziehung ω=f(k)Wenn da ist
"""

%matplotlib nbagg 
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig = plt.figure(figsize = (8, 6))


L, t_max = 6,12
Nx= 240
Nt = 100

delta_x=L/Nx
delta_t=t_max/Nt
xx=list(range(Nx))
#X,T = np.meshgrid(x,t)

omega=10
omega0=30

a=1
k1= 2*np.pi/(L/10)

V0= omega/k1

omega1=np.sqrt((V0*k1)**2+omega0**2)
phi1=0

k2= (1+0.15)*k1
omega2=np.sqrt((V0*k2)**2+omega0**2)
phi2=0

u1=np.zeros([Nx,Nt])
u2=np.zeros([Nx,Nt])
utot=np.zeros([Nx,Nt])


xlis=np.zeros([Nx])
for i in range(Nx):
    x = i*delta_x
    xlis[i] = x
    for j in range(Nt):
        t = j*delta_t
        u1[i,j]=a*np.cos(k1*x-omega1*t-phi1)
        u2[i,j]=a*np.cos(k2*x-omega2*t-phi2)
        utot[i,j]= u1[i,j]+u2[i,j]



def update(j,utot,fig_title):
    if j != 0:
        plt.cla()
    plt.ylim(-3, 3)
    plt.xlim(0, L)
    plt.plot( xlis,u1[:,j],  '--', color='red', linewidth = 1)
    plt.plot( xlis,u2[:,j],  '--', color='blue',linewidth = 1)
    plt.plot( xlis,utot[:,j],  '-', color='green', linewidth =4)

    plt.title(fig_title  + str("{0:.1f}".format(j*delta_t)))

    plt.xlabel('X')
    plt.ylabel('U')
    plt.legend(['u1','u2', 'u1+u2'], loc='upper right')


ani = animation.FuncAnimation(fig,update,fargs = (utot,'Beat: t ='), interval =1, frames = Nt,blit=False)
fig.show()

ani.save("output2.gif", writer="imagemagick")


Ergebnis (2) Dispergierbar

output2.gif

** In diesem Fall gibt es einen Unterschied zwischen der Gruppengeschwindigkeit (der Geschwindigkeit, mit der sich die Hüllkurve bewegt ("Stöhnwellenform")) und der Phasengeschwindigkeit (der Geschwindigkeit, mit der sich die Welle selbst bewegt). Die "Stöhnwellenform" bewegt sich mit Gruppengeschwindigkeit und die Welle selbst bewegt sich mit Phasengeschwindigkeit. ** ** **


Ergebnis (3): Verteilende und nicht verteilte Animation: Vergleich

output3.gif

Der Bewegungsunterschied zwischen dispergierbar (grüne Linie) und nicht dispersiv (violette Linie) ist klar.


Nachtrag

(1) Über die in diesem Dokument verwendete Verteilungsbeziehung

Eindimensionale Stringwellengleichung, $\frac{\partial^2 u(x,t)}{\partial t^2} = v^2 \frac{\partial^2 u(x,t)}{\partial x^2} \tag{1} $ Wenn die Rückstellkraft $ - \ omega_0 ^ 2 u (x, t) \ tag {2} $ hinzugefügt wird, die die Teilchen der Kette an jeder Position enthält, wird die Wellengleichung

\frac{\partial^2 u(x,t)}{\partial t^2} = v^2 \frac{\partial^2 u(x,t)}{\partial x^2} -\omega_0^2 u(x,t) \tag{3} Wird sein. Einige Schwingungen, die in tatsächlichen Materialien auftreten, folgen einer ähnlichen Gleichung (z. B. Schwingungen intraatomarer Elektronen).

Die Lösung dieser Wellengleichung ist

Als $ \ omega (k) = (v ^ 2k ^ 2 + \ omega_0 ^ 2) ^ \ frac {1} {2} \ tag {4} $

u(x,t) = a cos(k x-\omega(k)t-\phi \tag{5}

Es stellt sich heraus, dass In dem Inhalt (2) dieser Arbeit wurde die obige Dispersionsbeziehung (Gleichung .4) verwendet.

(2) In verschiedenen Medien sind verschiedene Dispersionsbeziehungen bekannt. Lassen Sie mich Ihnen ein Beispiel geben.

  • ** Dispersionsformel von Wellen, die sich auf der Oberfläche von tiefem Wasser bewegen **: $ \ omega (k) = \ sqrt (gk + T k ^ 3 / \ rho) \ tag {6} $ (g ist die Schwerkraftbeschleunigung, T ist Oberflächenspannung, $ \ rho $ ist Dichte.

  • ** Zwei-Atom-System (jede Ionenmasse ist $ m_1 $ und $ m_2 $) ** ** Gitterschwingung ** unter Berücksichtigung nur der engsten Wechselwirkung Wiki /% E6% A0% BC% E5% AD% 90% E6% 8C% AF% E5% 8B% 95) Verteilung: \omega^2(k)= \frac{f}{m_\mu} \left ( 1 \pm \sqrt{1-\frac{4m_\mu^{\, 2}}{m_1m_2} \sin^2{ka} } \right ), \quad \frac{1}{m_\mu}=\frac{1}{m_1} + \frac{1}{m_2}\tag{7}


Verweise

[1] Für die Animationserstellung war der Qiita-Artikel von AnchorBlues: Flexible Animationserstellung mit Animation.FuncAnimation of matplotlib hilfreich und leicht zu verstehen. ..

[2] Für Gruppengeschwindigkeit zum Beispiel von Yosuke Nagaoka ["Vibration and Waves"](https://www.amazon.co.jp/%E6%8C%AF%E5%8B%95%E3%81% A8% E6% B3% A2-% E9% 95% B7% E5% B2% A1-% E6% B4% 8B% E4% BB% 8B / dp / 4785320451) hat eine elementare und leicht verständliche Erklärung.

Recommended Posts

[Wissenschaftlich-technische Berechnung von Python] Wellen "Stöhnen" und Gruppengeschwindigkeit, Wellenüberlagerung, Visualisierung, Physik der High School
[Wissenschaftlich-technische Berechnung mit Python] Histogramm, Visualisierung, Matplotlib
[Wissenschaftlich-technische Berechnung mit Python] Logistisches Diagramm, Visualisierung, Matplotlib
[Wissenschaftlich-technische Berechnung mit Python] Polarkoordinatendiagramm, Visualisierung, Matplotlib
[Wissenschaftlich-technische Berechnung mit Python] Beispiel für die Visualisierung von Vektorfeld, elektrostatischem Magnetfeld, Matplotlib
[Wissenschaftlich-technische Berechnung mit Python] Summenberechnung, numerische Berechnung
Wissenschaftlich-technische Berechnung mit Python] Zeichnen und Visualisieren von 3D-Isoplanes und deren Querschnittsansichten mit Mayavi
[Wissenschaftlich-technische Berechnung mit Python] Inverse Matrixberechnung, numpy
[Wissenschaftlich-technische Berechnung von Python] Zeichnung von 3D-gekrümmter Oberfläche, Oberfläche, Drahtrahmen, Visualisierung, Matplotlib
[Wissenschaftlich-technische Berechnung mit Python] Plot, Visualisierung, Matplotlib von 2D-Daten, die aus einer Datei gelesen wurden
[Wissenschaftlich-technische Berechnung mit Python] Zeichnen, Visualisieren, Matplotlib von 2D-Konturlinien (Farbkonturen) usw.
[Wissenschaftlich-technische Berechnung nach Python] Numerische Lösung von 1-dimensionalen und 2-dimensionalen Wellengleichungen nach der FTCS-Methode (explizite Methode), doppelt gekrümmte partielle Differentialgleichungen
[Wissenschaftlich-technische Berechnung mit Python] Spline-Interpolation dritter Ordnung, scipy
[Wissenschaftlich-technische Berechnung von Python] Grundlegende Operation des Arrays, numpy
[Wissenschaftlich-technische Berechnung mit Python] Monte-Carlo-Integration, numerische Berechnung, Numpy
[Wissenschaftlich-technische Berechnung durch Python] Liste der Verwendung von (speziellen) Funktionen, die in der Physik unter Verwendung von scipy verwendet werden
[Wissenschaftliche und technische Berechnung von Python] Zeichnung fraktaler Figuren [Shelpinsky-Dreieck, Bernsley-Farn, fraktaler Baum]
[Wissenschaftlich-technische Berechnung nach Python] Numerische Lösung des Problems des eindimensionalen harmonischen Oszillators nach der Speed-Berle-Methode
[Wissenschaftlich-technische Berechnung nach Python] Numerische Integration, Trapezgesetz / Simpson-Gesetz, numerische Berechnung, scipy
[Wissenschaftlich-technische Berechnung mit Python] Lösen simultaner linearer Gleichungen, numerische Berechnung, Numpy
[Wissenschaftlich-technische Berechnung mit Python] 2D-Random-Walk (Drunken-Walk-Problem), numerische Berechnung
[Wissenschaftlich-technische Berechnung nach Python] Ableitung analytischer Lösungen für quadratische und kubische Gleichungen, mathematische Formeln, Sympy
[Wissenschaftlich-technische Berechnung von Python] Anpassung durch nichtlineare Funktion, Zustandsgleichung, scipy
[Wissenschaftlich-technische Berechnung mit Python] Berechnung des Matrixprodukts mit @ operator, python3.5 oder höher, numpy
[Wissenschaftlich-technische Berechnung mit Python] Lösen gewöhnlicher Differentialgleichungen, mathematischer Formeln, Sympy
[Wissenschaftlich-technische Berechnung mit Python] Lösen (verallgemeinerter) Eigenwertprobleme mit numpy / scipy mithilfe von Bibliotheken
[Wissenschaftlich-technische Berechnung von Python] Zeichnungsanimation der parabolischen Bewegung mit Locus, Matplotlib
[Wissenschaftlich-technische Berechnung mit Python] Lösen der gewöhnlichen Differentialgleichung zweiter Ordnung nach der Numerov-Methode, numerische Berechnung
[Wissenschaftlich-technische Berechnung mit Python] Zeichnen, visualisieren, matplotlib 2D-Daten mit Fehlerleiste
[Wissenschaftlich-technische Berechnung nach Python] Lösen der eindimensionalen Newton-Gleichung nach der Runge-Kutta-Methode 4. Ordnung
Berechnung der technischen Indikatoren durch TA-Lib und Pandas