Я работаю над программой, которая имитирует движение волны вдоль одномерной строки, чтобы в конечном итоге имитировать различные волновые пакеты. Я нашел программу в книге «Python Scripting for Computational Science», которая утверждает, что описывает волновые движения, хотя я не уверен, как ее реализовать (книга была в Google Books и не покажет мне текст до/после код).Python: Написание программы для имитации движения 1D волны вдоль строки
Например, я понимаю, что «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()
Вам действительно нужно задать более конкретный вопрос. «Я скопировал этот код из книги и понятия не имею, что это значит», это не очень хороший вопрос, заданный в StackOverflow. Возможно, попробуйте на самом деле получить и прочитать книгу, если вы хотите знать, о чем говорит код книги. – Amber
Ну, я не могу получить книгу (у библиотеки ее нет, а цена за 55,96 долларов не позволяет ей это исключить), но я немного упростил свой вопрос, если это поможет. Мне действительно нужны только две функции (I и f). Спасибо, Амбер. – user1322973
Возможно, вы хотите провести некоторое исследование волнового уравнения? Более конкретно [одномерное волновое уравнение] (https://en.wikipedia.org/wiki/Wave_equation#Scalar_wave_equation_in_one_space_dimension)? Вам нужно понять математику, стоящую перед этим, прежде чем вы сможете ее реализовать. –