从一根梁到一块板:矩形薄板的理论振动模态是怎样计算出来的?
梁的振型主要沿一个方向展开,而板的振型要同时描述两个方向。从悬臂梁走向矩形薄板,本质上是从一维连续体振动进入二维连续体振动。矩形薄板尺寸与坐标系
1. 为什么学完梁之后,下一步应该看板?
悬臂梁是理解结构模态最合适的起点。它的横向位移通常写成:矩形薄板则不同。板上的每一点都由两个坐标确定,因此横向位移写成:这看起来只是多了一个变量,但它带来了三个重要变化:- 振型不再只是沿一条线起伏,而是在一个平面内形成波峰、波谷和节线;
- 结构的长宽比、边界条件和几何对称性会显著影响模态排序。
因此,板振动是连接梁理论、壳体理论、有限元分析和实验模态分析的重要中间环节。2. 本文分析什么样的板?
- 采用 Kirchhoff–Love 经典薄板理论;
参数 | 本文分析什么样的板;">数值 |
长度 | 300 mm |
宽度 | 200 mm |
厚度 | 1 mm |
弹性模量 | 70 GPa |
密度 | 2700 kg/m³ |
泊松比 | 0.33 |
适用性:当板不够薄、频率较高或横向剪切效应不可忽略时,应改用 Mindlin–Reissner 板理论。本文的目标是建立基础概念,因此采用经典薄板模型。3. 薄板为什么能够弯曲?
梁有抗弯刚度,板也有对应的弯曲刚度。对于均匀各向同性薄板,其弯曲刚度为:但固有频率并不会增加八倍,因为质量也会增加。对于几何形状不变的薄板,可以粗略看出:也就是说,在经典薄板理论下,板的弯曲固有频率通常与厚度近似成正比。4. 矩形薄板的自由振动控制方程
Kirchhoff–Love 薄板的横向自由振动方程为:与梁方程相比,板方程多出了关于的导数以及、的耦合项。这说明板上任意一点的弯曲状态,不只受到一个方向曲率的影响。5. 将时间和空间分开
对线性无阻尼自由振动,可以假设位移由空间函数和时间函数相乘得到:找到哪些空间函数可以在不改变自身形状的情况下做简谐振动,以及每个振型对应多高的固有频率。6. 四边简支边界条件
理想简支边界不只要求边界处的横向位移为零,还要求边界法向弯矩为零。正弦函数在四条边上天然满足位移为零;代入后也满足相应的弯矩条件,因此可以构造出四边简支矩形板的振型:7. 模态编号 到底表示什么?
8. 第一阶振型
四条边位移为零,板中心附近振幅最大。整个板面在同一时刻基本同相运动,因此这是最容易被均匀分布载荷或中心附近点激励激发的模态之一。需要注意:图中的正、负只表示相位相反。模态振型本身可以整体乘以,物理意义不变。9. 振型:长度方向出现一条节线
因此,如果传感器恰好安装在节线上,该模态在该测点可能几乎不可见。10. 振型:宽度方向出现一条节线
这说明模态编号的大小不能直接代表频率排序。频率同时取决于、和长宽比。11. 振型:两个方向都有节线
此时板的空间变化明显比一阶模态复杂,局部曲率增大,因此固有频率进一步提高。12. 更高阶振型: 与
对于非正方形板,两者通常具有不同的固有频率。短边方向上的高阶变化会带来更大的曲率,因此频率更高。这也是为什么仅看振型的波腹数量还不够,还要结合板的实际尺寸。13. 节线图比三维振型图更适合观察什么?
三维振型图适合观察整体起伏,二维等值图更适合判断:在图中,振幅为零的线就是节线。对于理想简支矩形板,节线是平行于边界的直线。实际结构中,如果存在局部质量、开孔、加强筋、边界不对称或材料不均匀,节线可能弯曲、偏移甚至发生局部畸变。14. 固有频率公式是怎样得到的?
15. 从频率公式中可以直接读出什么?
15.1 尺寸越大,频率越低
如果板的两个平面尺寸同时按比例放大,而厚度不变,弯曲模态频率大致按尺寸平方的倒数下降。15.2 厚度越大,频率越高
15.3 材料越硬,频率通常越高
16. 本算例前12阶固有频率
本算例前12阶固有频率/顺序 | 模态编号 | 固有频率 / Hz |
1 | 
| 88.32 |
2 | 
| 169.85 |
3 | 
| 271.76 |
4 | 
| 305.73 |
5 | 
| 353.29 |
6 | 
| 489.17 |
7 | 
| 495.97 |
8 | 
| 577.50 |
9 | 
| 659.03 |
10 | 
| 679.41 |
11 | 
| 740.55 |
12 | 
| 794.91 |
模态编号是空间波数编号,模态阶次则是按固有频率排序后的顺序,两者并不等价。例如,某个模态可能比更早出现,也可能更晚出现,具体取决于板的长宽比。17. 为什么正方形板会出现重根模态?
这类具有相同理论固有频率的模态称为重根模态或简并模态。理论上的一个重根频率往往会分裂成两个非常接近的频率峰。18. 模态振型为什么可以整体乘任意常数?
模态振型本身只描述相对空间分布,不能直接给出结构在实际激励下会振动多少毫米。19. 固有模态与ODS不能混为一谈
运行变形形态 ODS 则是在某个实际激励频率下,结构各测点响应的空间分布。当激励频率接近某一阶固有频率,并且该模态被充分激发时,ODS 可能与该阶模态很相似。但在一般情况下,ODS 可能是多个模态响应的叠加:20. MATLAB一键运行代码
rectangular_plate_modes.m%% rectangular_plate_modes.m%四边简支矩形薄板:理论固有频率与振型%直接运行本脚本即可生成频率表和若干阶振型图clear;clc;closeall;%% 1.几何与材料参数a=0.300;%长度, mb=0.200;%宽度, mh=0.001;%厚度, mE=70e9;%弹性模量, Parho=2700;%密度, kg/m^3nu=0.33;%泊松比%薄板弯曲刚度D=E*h^3/(12*(1-nu^2));%% 2.计算前若干阶固有频率Mmax=5;Nmax=5;modeData= [];form=1:Mmaxforn=1:Nmaxomega_mn=pi^2*sqrt(D/(rho*h))*((m/a)^2+ (n/b)^2);f_mn=omega_mn/(2*pi);modeData= [modeData;m,n,f_mn];%#okendendmodeData=sortrows(modeData,3);disp('前12阶理论模态:');disp(array2table(modeData(1:12,:),...'VariableNames', {'m','n','Frequency_Hz'}));%% 3.建立空间网格Nx=121;Ny=101;x=linspace(0,a,Nx);y=linspace(0,b,Ny);[X,Y] =meshgrid(x,y);%% 4.绘制指定振型selectedModes= [11;21;12;22;31;13];fork=1:size(selectedModes,1)m=selectedModes(k,1);n=selectedModes(k,2);W=sin(m*pi*X/a).*sin(n*pi*Y/b);omega_mn=pi^2*sqrt(D/(rho*h))*((m/a)^2+ (n/b)^2);f_mn=omega_mn/(2*pi);figure('Color','w');surf(X*1000,Y*1000,W,'EdgeColor','none');xlabel('x / mm');ylabel('y / mm');zlabel('归一化振幅');title(sprintf('简支矩形板振型 (%d,%d), f = %.1f Hz',m,n,f_mn));axistight;view(135,28);gridon;colorbar;end%% 5.绘制节线图:示例(3,2)m=3;n=2;W=sin(m*pi*X/a).*sin(n*pi*Y/b);figure('Color','w');contourf(X*1000,Y*1000,W,31,'LineColor','none');holdon;contour(X*1000,Y*1000,W, [00],'k','LineWidth',2);holdoff;xlabel('x / mm');ylabel('y / mm');title('振型 (3,2):黑线为内部节线');axisequaltight;colorbar;gridon;%% 6.绘制前12阶频率排序figure('Color','w');bar(modeData(1:12,3));xticks(1:12);xticklabels(compose('(%d,%d)',modeData(1:12,1),modeData(1:12,2)));xtickangle(45);xlabel('模态编号 (m,n)');ylabel('固有频率 / Hz');title('前12阶理论固有频率');gridon;%% 7.可选:简单振型动画m=2;n=1;W=sin(m*pi*X/a).*sin(n*pi*Y/b);figure('Color','w');forphase=linspace(0,2*pi,120)Wt=W*cos(phase);surf(X*1000,Y*1000,Wt,'EdgeColor','none');xlabel('x / mm');ylabel('y / mm');zlabel('归一化振幅');title(sprintf('振型 (%d,%d) 动画',m,n));axis([0a*10000b*1000-11]);view(135,28);gridon;drawnow;end21. Python一键运行代码
pip install numpy matplotlibrectangular_plate_modes.pypython rectangular_plate_modes.pyrectangular_plate_modes.py#四边简支矩形薄板:理论固有频率与振型#依赖:numpy、matplotlib#运行:python rectangular_plate_modes.pyfrom pathlib import Pathimport numpy as npimport matplotlib.pyplot as plt# 1.几何与材料参数a =0.300# mb =0.200# mh =0.001# mE =70e9# Parho =2700.0# kg/m^3nu =0.33D = E * h3/ (12 (1- nu2))def natural_frequency(m: int, n: int) ->float:"""返回(m,n)阶模态的固有频率,单位Hz。"""omega = np.pi**2 np.sqrt(D / (rho * h)) * ((m / a)**2+ (n / b)*2)return omega / (2 np.pi)# 2.计算并排序前若干阶频率mode_data = []for m inrange(1, 6):for n inrange(1, 6):mode_data.append((m, n, natural_frequency(m, n)))mode_data.sort(key=lambda item: item[2])print("前12阶理论模态:")print("Order(m,n)Frequency/Hz")for order, (m, n, freq) inenumerate(mode_data[:12], start=1):print(f"{order:>5d}({m},{n}){freq:>12.3f}")# 3.建立空间网格x = np.linspace(0, a, 121)y = np.linspace(0, b, 101)X, Y = np.meshgrid(x, y)output_dir = Path("plate_mode_figures")output_dir.mkdir(exist_ok=True)# 4.绘制指定振型selected_modes = [(1,1), (2,1), (1,2), (2,2), (3,1), (1,3)]for m, n in selected_modes:W = np.sin(m * np.pi * X / a) * np.sin(n * np.pi * Y / b)freq = natural_frequency(m, n)fig = plt.figure(figsize=(8, 5.8))ax = fig.add_subplot(111, projection="3d")ax.plot_surface(X *1000,Y *1000,W,rstride=3,cstride=3,linewidth=0.25,antialiased=True,)ax.set_xlabel("x / mm")ax.set_ylabel("y / mm")ax.set_zlabel("Normalized amplitude")ax.set_title(f"Mode ({m},{n}), f = {freq:.1f} Hz")ax.view_init(elev=28, azim=-135)fig.tight_layout()fig.savefig(output_dir /f"mode_{m}{n}_surface.png",dpi=220,bbox_inches="tight",)# 5.节线图m, n =3, 2W = np.sin(m * np.pi * X / a) * np.sin(n * np.pi * Y / b)fig = plt.figure(figsize=(7.6, 5.2))ax = fig.add_subplot(111)filled = ax.contourf(X *1000, Y *1000, W, levels=31)ax.contour(X *1000, Y *1000, W, levels=[0], linewidths=2)fig.colorbar(filled, ax=ax, label="Normalized amplitude")ax.set_aspect("equal", adjustable="box")ax.set_xlabel("x / mm")ax.set_ylabel("y / mm")ax.set_title("Mode (3,2): nodal lines and antinodes")fig.tight_layout()fig.savefig(output_dir /"mode_32_nodal_lines.png",dpi=220,bbox_inches="tight",)# 6.前12阶频率排序labels = [f"({m},{n})"for m, n, _ in mode_data[:12]]frequencies = [freq for _, _, freq in mode_data[:12]]fig = plt.figure(figsize=(9, 5.5))ax = fig.add_subplot(111)ax.bar(labels, frequencies)ax.set_xlabel("Mode index (m,n)")ax.set_ylabel("Natural frequency / Hz")ax.set_title("First 12 natural frequencies")ax.tick_params(axis="x", rotation=45)ax.grid(True, axis="y")fig.tight_layout()fig.savefig(output_dir /"first_12_frequencies.png",dpi=220,bbox_inches="tight",)plt.show()
22. 如何修改代码做自己的板?
a=0.300;b=0.200;h=0.001;E=70e9;rho=2700;nu=0.33;a =0.300b =0.200h =0.001E =70e9rho =2700.0nu =0.3323. 理论结果如何与有限元结果核对?
可以在有限元软件中建立同尺寸、同材料参数的薄板模型,并采用四边简支约束。
需要特别注意,有限元软件中的简支实现并不总是等同于理论中的理想简支边界。如果约束了过多自由度,模型可能更接近固支;如果约束不足,则可能出现刚体模态。24. 理论结果如何与实验模态结果核对?
高阶模态的空间波长更短,因此测量网格必须足够密。否则可能出现空间混叠,将高阶振型误判成低阶振型。25. 本文模型没有考虑哪些因素?
因此,理论频率与实际试验结果存在一定偏差是正常的。理论模型的主要价值不是保证每个频率与实验完全一致,而是建立:26. 从梁到板,真正增加了什么?
这些内容将直接通向圆形板、薄壁壳体、复杂组合结构以及有限元模态分析。27. 小结
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2026-08-11
最近编辑:14天前
作者推荐
