基于MATLAB的Lamb波频散曲线数值计算与分析系统
项目简介
本项目是一个基于MATLAB开发的高级数值计算工具,专用于求解和分析各向同性板状结构中Lamb波(兰姆波)的频散特性。Lamb波作为一种导波,在薄板中传播时表现出复杂的多模态和频散现象。本系统通过编程实现了Rayleigh-Lamb频率方程的自动求解,能够精确计算对称模态(S模态)和反对称模态(A模态)的相速度与群速度,并生成直观的频散曲线图。
该程序特别针对超越方程求解难、根的分布复杂以及奇点处理等问题进行了算法优化,适用于超声无损检测、材料评价及波动力学教学与研究。
功能特性
- 全自动模态求解:能够自动分离并计算S模态(Symmetric)和A模态(Antisymmetric)的多个阶次。
- 高精度数值算法:采用"粗略扫描 + 精细求解"的策略,有效避免漏根,并通过
fzero算法确保根的精度达到 $10^{-6}$ 量级。 - 数值稳定性优化:Rayleigh-Lamb方程采用"乘积形式"而非传统的"商形式"编写,有效消除了三角函数分母为零导致的数值奇点问题。
- 双速度分析:同时支持 相速度 (Phase Velocity) 和 群速度 (Group Velocity) 的计算与绘图。
- 可视化交互:
* 实时进度条显示计算状态。
* 自动绘制双子图(相速度 vs 群速度)。
* 自动标注模态名称(S0, S1, A0, A1...)。
* 提供纵波速度 ($C_L$) 和横波速度 ($C_T$) 参考线。
系统要求
- 软件环境:MATLAB R2016a 或更高版本。
- 工具箱:需安装 MATLAB Optimization Toolbox(用于
fzero 和 optimset)。
使用方法
- 启动程序:在MATLAB环境中直接运行主函数即可启动计算。
- 参数修改:若需更改材料或几何参数,请在代码的"参数设置"部分修改以下变量:
*
E:杨氏模量 (Pa)
*
nu:泊松比
*
rho:密度 (kg/m^3)
*
d:板厚 (m)
*
fd_max:最大频厚积范围 (MHz-mm)
- 结果输出:程序运行结束后,将在控制台打印计算耗时与状态,并自动弹出一个包含相速度和群速度频散曲线的图形窗口。
核心算法与实现逻辑
本系统的核心代码实现了从物理参数定义到最终可视化的全流程。以下是具体的实现细节:
1. 物理模型与参数初始化
程序首先定义了铝合金(Aluminum 6061)的材料属性,并基于弹性力学公式自动计算材料的
纵波速度 ($C_L$) 和
横波速度 ($C_T$)。
为了保证计算的通用性,频率扫描采用
频厚积 (Frequency-Thickness product, $fd$) 作为自变量,向量范围设定为 0.1 至 10 MHz-mm,步长为 0.05 MHz-mm。
2. 数值求解策略 (Rayleigh-Lamb方程)
由于频散方程是超越方程,程序采用了稳健的混合求解算法:
- 粗略扫描:在设定的相速度范围(0.1倍横波速度 ~ 20000 m/s)内,以 10 m/s 为步长进行网格扫描,计算方程残差。
- 残差计算:分别调用 S模态 和 A模态 的方程函数。代码中使用了复数运算
sqrt(complex(...)) 来计算波数参数 $p$ 和 $q$,确保在各种速度区间(如 $C_p < C_T$ 或 $C_T < C_p < C_L$)内数值计算的连贯性。 - 方程形式优化:为了避免正切函数 (
tan) 在 $pi/2$ 处的无穷大奇点,代码将 Rayleigh-Lamb 方程重写为乘积形式(例如 S模态包含 (k^2-q^2)^2 * cos * sin + 4k^2pq * sin * cos),从而保证了全域内的数值稳定性。 - 精细求根:在粗略扫描发现符号变化的区间内,使用结合了二分法和割线法的
fzero 函数进行精确搜索,容差设置为 $1e-6$。
3. 数据重组与模态追踪
在循环计算完所有频率点的根之后,由于不同频率下的根数量不一致,数据以 Cell 数组形式存储。程序包含一个数据重组模块,将离散的根整理为矩阵形式
[频厚积 x 模态阶数]。这使得后续能够按列提取出单一模态(如 S0, A0)的连续曲线数据,便于绘图和群速度计算。
4. 群速度计算
群速度 ($C_g$) 的计算并未直接求解更为复杂的群速度频散方程,而是利用已求得的相速度结果进行数值差分。
程序实现了公式 $C_g = domega / dk$ 的数值近似。通过处理重组后的相速度矩阵,保证了在模态追踪正确的前提下获得平滑的群速度曲线。
5. 高级可视化
绘图模块包含详尽的格式控制:
- 相速度图:限制Y轴范围为 0-15 km/s,使用不同颜色(红/蓝)和线型区分 S/A 模态。代码包含智能标注逻辑,在曲线中间位置自动添加 "S0", "A1" 等标签,并绘制 $C_L$ 和 $C_T$ 参考虚线。
- 群速度图:同步绘制对应的群速度曲线,Y轴限制在 0-6 km/s,直观展示能量传播速度随频率的变化。
6. 关键内部函数说明
- rayleigh_lamb_S: 实现对称模态频散方程的残差计算(无奇点乘积形式)。
- rayleigh_lamb_A: 实现反对称模态频散方程的残差计算(无奇点乘积形式)。
- find_roots_in_scan: (隐含逻辑) 接收扫描残差,识别过零点区间,并对每个区间调用优化求解器寻找精确解。
- reorganize_modes: 将杂乱的Cell数组根数据对齐并填充到矩阵中,处理模态阶数的动态变化。
- calculate_group_velocity: 基于相速度数据,通过差分算法计算群速度。