How to model a transverse wave in Matlab (Wave Equation)

10 次查看(过去 30 天)
if true
% USE POTENTIAL SOLUTION TO SCALAR WAVE EQUATION TO
% PLOT S WAVE
clear
% TIME DOMAIN
t = 0:1:500;
% WAVE VECTOR
k1 = 0.4;
k2 = 0.2;
k3 = 0.3;
% COORDINATES OF RAY (DETERMINED BY WAVE VECTOR)
x = 0:2.5:50;
y = k2/k1*x;
z = k3/k1*x;
% DIV(K,X)
KX = sum([k1*x; k2*y; k3*z]); % k.x
% OTHER WAVE PARAMETERS
A = 3; % AMPLITUDE
w = 0.1; % ANGULAR FREQUENCY
% LOOP OVER TIME STEPS
for n = 1:numel(t)
% DISPLACEMENTS (CURL OF SCALAR POTENTIAL):
ux = k1*A*(sin(w*t(n) - KX));
uy = k2*A*(sin(w*t(n) - KX));
uz = k3*A*(sin(w*t(n) - KX));
% PLOT WAVE FOR CURRENT TIME STEP
hold off
plot3(x,y,z,'r-');
hold on
plot3(x+ux,y+uy,z+uz,'ko','markersize',4,...
'markerfacecolor','k');
axis equal
axis([-10 55 -10 30 -5 40])
xlabel('x'), ylabel('y'), zlabel('z')
title(num2str(t(n)))
grid on
drawnow
end end
The current code models a longitudinal wave; a wave that oscillates along the direction of propagation.
However, I am trying to model a transverse wave, where the wave oscillates perpendicular to the direction of propagation.
u(z,t) = ∇φ(z,t) = (0,0,−ik)Aexp[i(ωt − kz)] is what dictates the longitudinal wave (z is direction of propagation)
here A (which is amplitude, defined by A = 3 in the code, is just a variable)
u(z,t) = ∇ × Ψ(z,t) = (ikAy ,−ikAx ,0)exp[i(ωt − kz)] is what dictates the transverse wave. Here, A is a vector quantity, and I am not sure how to define my previously used variable A, and split it into Ax and Ay.
Thanks for any help

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Nonlinear Dynamics 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by