私は、最終的にさまざまな波束をシミュレートするために、1 次元の文字列に沿って波動をシミュレートするプログラムに取り組んでいます。「計算科学のための Python スクリプティング」という本の中で、波動を記述すると主張するプログラムを見つけましたが、それを実装する方法はよくわかりません (この本は Google ブックスにあり、その前後のテキストは表示されません)。コード)。
たとえば、「f」は x と t の関数であり、「I」は x の関数であることは理解していますが、波を生成するために実際に必要な関数は何ですか?
I=
f=
c=
L=
n=
dt=
tstop=
x = linespace(0,L,n+1) #grid points in x dir
dx = L/float(n)
if dt <= 0: dt = dx/float(c) #max step time
C2 = (c*dt/dx)**2 #help variable in the scheme
dt2 = dt*dt
up = zeros(n+1) #NumPy solution array
u = up.copy() #solution at t-dt
um = up.copy() #solution at t-2*dt
t = 0.0
for i in iseq(0,n):
u[i] +0.5*C2*(u[i-1] - 2*u[i] +u[i+1]) + \
dt2*f(x[i], t)
um[0] = 0; um[n] = 0
while t<= tstop:
t_old = t; t+=dt
#update all inner points:
for i in iseq(start=1, stop= n-1):
up[i] = -um[i] +2*u[i] + \
C2*(u[i-1] - 2*u[i] + u[i+1]) + \
dt2*f(x[i], t_old)
#insert boundary conditions
up[0] = 0; up[n] = 0
#updata data structures for next step
um = u.copy(); u = up.copy()