平面波展开法计算二维准零刚度局域共振板能带结构MATLAB程序
时间: 2023-08-12 11:03:54 浏览: 115
以下是一个简单的MATLAB程序,用于计算二维准零刚度局域共振板的能带结构,使用平面波展开法:
```
% 定义材料和几何参数
a = 1; % 板长
b = 1; % 板宽
h = 0.1; % 板厚
rho = 7850; % 材料密度
E = 2.1e11; % 弹性模量
nu = 0.3; % 泊松比
% 定义平面波展开法参数
N = 10; % 用于展开周期函数的平面波数目
kmax = pi/a; % 最大波矢
dk = 0.01*kmax; % 波矢间隔
k = dk:dk:kmax; % 波矢数组
% 定义计算矩阵
K = zeros(2*N+1, 2*N+1);
M = zeros(2*N+1, 2*N+1);
% 计算矩阵元
for i = -N:N
for j = -N:N
if i == j
K(i+N+1, j+N+1) = (pi^4*h^3*rho)/(12*a^3*(1-nu^2));
M(i+N+1, j+N+1) = (rho*h*a*b)/(2*N+1);
else
K(i+N+1, j+N+1) = (2*pi^4*h^3*rho)/(a^3*(i^2+j^2)^2*(1-nu^2));
M(i+N+1, j+N+1) = 0;
end
end
end
% 计算特征值和特征向量
[V,D] = eig(K,M);
% 计算频率
omega = sqrt(diag(D))/2/pi;
% 绘制能带结构
figure;
plot(k, omega);
xlabel('波矢 k');
ylabel('频率 (Hz)');
title('二维准零刚度局域共振板能带结构');
```
注意:这只是一个简单的程序,未考虑边界条件等因素,仅供参考。在实际应用中,需要根据具体情况进行修改和完善。
阅读全文