声波在三维空间中的传播规律可以用偏微分方程精确描述。这个方程本质上反映了声压场在空间和时间上的变化关系:
∂²p/∂t² = c²(∂²p/∂x² + ∂²p/∂y² + ∂²p/∂z²)
其中p(x,y,z,t)表示声压,c是介质中的声速。这个看似简洁的方程实际上包含了丰富的物理内涵:
在实际应用中,这个方程可以模拟从小型会议室到大型音乐厅等各种声学环境。例如,在设计音乐厅时,我们需要预测声波从舞台到不同座位区的传播路径和时间,这时三维波动方程就提供了理论基础。
提示:方程中的二阶导数项决定了声波传播的波动特性,这也是区别于热传导等扩散方程的关键特征。
目前求解三维波动方程的主流方法包括:
| 方法 | 离散方式 | 优点 | 缺点 |
|---|---|---|---|
| 有限差分法(FDM) | 规则网格 | 实现简单 | 几何适应性差 |
| 有限元法(FEM) | 非结构化网格 | 几何灵活 | 计算量大 |
| 谱方法 | 全局基函数 | 精度高 | 边界处理复杂 |
在模拟一个10m×10m×5m的房间声场时,若采用FDM方法:
对于1秒的声传播模拟,需要1万时间步,总计4×10¹⁰次运算。这还只是最简单的矩形空间情况,遇到复杂几何形状时,计算量会呈指数级增长。
PINN采用全连接神经网络结构,典型配置如下:
matlab复制layers = [
featureInputLayer(4) % 输入[x,y,z,t]
fullyConnectedLayer(128)
tanhLayer
fullyConnectedLayer(128)
tanhLayer
fullyConnectedLayer(128)
tanhLayer
fullyConnectedLayer(1) % 输出p
];
关键设计考虑:
损失函数L由三部分组成:
L = λ₁L_data + λ₂L_pde + λ₃L_bc
其中:
PDE残差项的具体实现:
matlab复制% 计算二阶导数
[dpdt, dpdx, dpdy, dpdz] = dlgradient(p, t, x, y, z);
[d2pdt2] = dlgradient(dpdt, t);
[d2pdx2] = dlgradient(dpdx, x);
% 类似计算其他二阶导数
% PDE残差
pde_residual = d2pdt2 - c^2*(d2pdx2 + d2pdy2 + d2pdz2);
L_pde = mean(pde_residual.^2);
matlab复制x_min = 0; x_max = 10; % x范围
y_min = 0; y_max = 10; % y范围
z_min = 0; z_max = 5; % z范围
t_min = 0; t_max = 1; % 时间范围
matlab复制N = 10000; % 总点数
X = x_min + (x_max-x_min)*rand(N,1);
Y = y_min + (y_max-y_min)*rand(N,1);
Z = z_min + (z_max-z_min)*rand(N,1);
T = t_min + (t_max-t_min)*rand(N,1);
matlab复制initialLearnRate = 0.001;
decayRate = 0.1;
decaySteps = 1000;
lrSchedule = @(epoch) initialLearnRate*decayRate^floor(epoch/decaySteps);
matlab复制% 初始权重
lambda_pde = 1.0;
lambda_bc = 1.0;
% 训练过程中动态调整
if mod(iteration,100)==0
rel_pde = L_pde/(L_pde+L_bc);
lambda_pde = 1.0/(rel_pde+1e-3);
lambda_bc = 1.0/(1-rel_pde+1e-3);
end
matlab复制p_analytic = @(x,y,z,t) sin(pi*x/10).*sin(pi*y/10).*sin(pi*z/5).*cos(pi*c*t*sqrt(3/125));
matlab复制error = norm(p_pred - p_fdm)/norm(p_fdm);
在相同硬件配置下(NVIDIA RTX 3090):
| 方法 | 网格数 | 计算时间 | 内存占用 |
|---|---|---|---|
| FDM | 4M | 45分钟 | 12GB |
| PINN | 10K点 | 8分钟 | 3GB |
值得注意的是,PINN的计算时间主要消耗在训练阶段,一旦网络训练完成,推理过程几乎是瞬时的。
matlab复制% 扩展输入特征
inputs = [x,y,z,t,temp,velocity];
% 修改PDE残差项
pde_residual = ... + convection_terms;
在实际工程案例中,我们曾用PINN模拟了一个汽车内部的声场分布。与传统FEM方法相比,PINN在保持精度的同时将计算时间从6小时缩短到40分钟,且能方便地研究不同座椅布局对声场的影响。