地震波有限差分走时计算matlab
时间: 2023-11-03 09:06:45 浏览: 184
有限差分matlab代码-MT_inversion_matlab:Matlab代码用于矩张量地震数据的反演
以下是一个简单的地震波有限差分走时计算matlab代码示例:
% 定义模型参数
vp = 2500; % 声速
dx = 10; % 网格间距
nx = 100; % 网格数
nt = 500; % 时间步数
dt = 0.001; % 时间步长
sx = 50; % 源位置
sz = 50; % 源位置
% 初始化速度场和波场
v = vp * ones(nx, nx);
u = zeros(nx, nx);
u_old = zeros(nx, nx);
% 计算波场
for it = 1:nt
% 保存旧波场
u_old = u;
% 计算新波场
for i = 2:nx-1
for j = 2:nx-1
u(i, j) = 2 * u_old(i, j) - u_old(i, j-1) ...
+ (vp*dt/dx)^2 * (u_old(i+1, j) - 2*u_old(i, j) + u_old(i-1, j)) ...
- u_old(i, j+1);
end
end
% 添加源项
u(sx, sz) = u(sx, sz) + exp(-0.5*((it-1)*dt/0.1)^2);
% 绘制波场
imagesc(u);
colormap(gray);
drawnow;
end
% 绘制地震波传播动画
movie(gcf, getframe(gcf));
阅读全文