Исследование поперечных и продольных волн: методы и примеры кода

В области распространения волн поперечные волны и продольные волны являются двумя фундаментальными понятиями. В то время как поперечные волны предполагают смещение частиц перпендикулярно направлению распространения волны, продольные волны предполагают смещение, параллельное направлению распространения волны. В этой статье блога мы рассмотрим различные методы анализа и понимания поперечных и продольных волн, сопровождаемые примерами кода.

  1. Методы поперечных волн.
    Поперечные волны обычно встречаются в материалах, обладающих эластичностью. Вот несколько методов анализа поперечных волн:

a) Моделирование методом конечных элементов (МКЭ):
Моделирование методом конечных элементов может быть выполнено для изучения поведения поперечных волн в сложных структурах. Следующий фрагмент кода демонстрирует простое моделирование FEM с использованием пакета FEniCSв Python:

from dolfin import *
mesh = UnitSquareMesh(32, 32)
V = VectorFunctionSpace(mesh, "Lagrange", 1)
u, v = TrialFunction(V), TestFunction(V)
a = inner(grad(u), grad(v)) * dx
L = Constant((0, 0)) * v * dx
u = Function(V)
solve(a == L, u)

b) Измерение скорости поперечной волны:
Скорость поперечных волн можно определить, измеряя время, необходимое волне для распространения через материал. Вот пример измерения скорости поперечной волны с помощью ультразвукового контроля в Python:

import numpy as np
def measure_shear_wave_velocity(distance, time):
    shear_wave_velocity = distance / time
    return shear_wave_velocity
distance = 10  # Distance traveled by shear wave (in meters)
time = 5  # Time taken by shear wave to travel the distance (in seconds)
shear_wave_velocity = measure_shear_wave_velocity(distance, time)
print("Shear wave velocity:", shear_wave_velocity, "m/s")
  1. Методы продольных волн.
    Продольные волны обычно наблюдаются в различных волновых явлениях, таких как звуковые волны. Вот несколько методов анализа продольных волн:

a) Анализ с быстрым преобразованием Фурье (БПФ):
БПФ можно использовать для анализа продольных волн и извлечения информации о частоте. В следующем фрагменте кода показано, как выполнить анализ БПФ для сигнала продольной волны с использованием библиотек numpyи matplotlibв Python:

import numpy as np
import matplotlib.pyplot as plt
# Generate a longitudinal wave signal
time = np.linspace(0, 1, 1000)
frequency = 10
amplitude = 1
wave_signal = amplitude * np.sin(2 * np.pi * frequency * time)
# Perform FFT analysis
fft_result = np.fft.fft(wave_signal)
frequencies = np.fft.fftfreq(len(time), time[1] - time[0])
# Plot the frequency spectrum
plt.plot(frequencies, np.abs(fft_result))
plt.xlabel("Frequency (Hz)")
plt.ylabel("Amplitude")
plt.show()

b) Анализ формы волны:
Методы анализа формы волны, такие как обнаружение пиков и извлечение огибающей, могут дать представление о характеристиках продольных волн. Вот пример обнаружения пика сигнала продольной волны с использованием библиотеки scipyв Python:

import numpy as np
from scipy.signal import find_peaks
# Generate a longitudinal wave signal
time = np.linspace(0, 1, 1000)
frequency = 10
amplitude = 1
wave_signal = amplitude * np.sin(2 * np.pi * frequency * time)
# Perform peak detection
peaks, _ = find_peaks(wave_signal, height=0)
# Plot the wave signal with detected peaks
plt.plot(time, wave_signal)
plt.plot(time[peaks], wave_signal[peaks], "x")
plt.xlabel("Time")
plt.ylabel("Amplitude")
plt.show()