#利用python和matplotlib繪製波函數
import math
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
sqrt=math.sqrt; N=10
a=1; b=1; v=2
x=np.arange(-10,10,0.1)
for j in range(3):
t=0.5*j
y=a/((x-v*t)**2+b**2)+j*2
s='v=2; t='+str(round(t,1))
if(j==0):
plt.plot(x,y,'k--',lw=2,label=s)
else:
plt.plot(x,y,label=s)
for j in range(1,3):
t=0.5*j
y=a/((x+v*t)**2+b**2)-j*2
s='v=-2; t='+str(round(t,1))
plt.plot(x,y,label=s)
plt.title(r"$y(x,t)=\frac{a}{\sqrt{(x-vt)^2+b^2}}$")
plt.legend(loc='upper left',facecolor='c')
plt.savefig('Lorentzian-wave-v.png')
print('done')
一個行進的波要滿足什麼樣的方程式呢?這是一個非常重要的問題。首先我們要觀察波的特性,如果同學們熟悉了python程式的設計和matplotlib繪圖模組的應用,那麼你可以很快地利用程式和繪圖的功能繪製下面這個函數的圖形:
\[y(x,t)=\dfrac{a}{(x-vt)^2+b^2}\]
\(y(x,t)\)是一個雙變數的函數(空間\(x\)和時間\(t\)的函數)。這個函數稱為Lorentzian函數,代表的一個典型的行進波的特性:在給定的時間下,波會在空間中呈現出一個高低起伏的波形,當我們把時間向前加一些數值(t+dt),我們會發現繪製出來的波形不會改變,只是高低起伏的位置向前平移,這當然也就是我們日常生活中對波的認識。對於其他不同形狀的波,我們當然只要對\(y(x,t)\)的函數做適當的調整,但是波形隨著時間在空間中平移的特性,仍然是波所必須具備的根本性質,因此當我們要尋找波所要滿足的方程式的時候,我們當然要求這個方程式要給我們具有這種特性的函數,作為這個方程式的解。基於這樣的討論我們下面可以來驗證下列的微分方程式,就是波所要滿足的波動方程式:
\[\dfrac{\partial^2 y}{\partial x^2}=\dfrac{1}{v^2}\dfrac{\partial^2 y}{\partial t^2}\]