基于MATLAB的Bouc-Wen模型动力响应计算
一、模型参数定义
%% 参数设置(参考防屈曲支撑试验数据)
params.lambda1 = 0.85; % 刚度比例因子
params.k = 1.8e5; % 初始刚度(N/m)
params.A = 1.24; % 滞回强度
params.beta = 0.25; % 滞回形状参数
params.gamma = 0.75; % 滞回形状参数
params.n = 1.5; % 非线性指数
params.dt = 0.001; % 积分步长(s)
二、微分方程定义
function dzdt = boucwen_ode(t, z, x_dot, params)
% Bouc-Wen滞回变量微分方程
dzdt = params.A * x_dot - ...
params.beta * abs(x_dot) * abs(z)^(params.n-1) * z - ...
params.gamma * x_dot * abs(z)^params.n;
end
三、动力响应计算
%% 输入激励定义(示例:正弦波)
t_span = [0 10]; % 时间范围
t_eval = 0:0.001:10; % 评估时间点
x_dot_input = 0.1*sin(2*pi*1*t_eval); % 速度输入
%% 初始条件
z0 = 0; % 初始滞回位移
%% 数值求解
[~, z] = ode45(@(t,z) boucwen_ode(t,z,x_dot_input,params), t_span, z0);
%% 计算恢复力
F = params.lambda1 * x_dot_input + (1-params.lambda1) * params.k * z;
四、结果可视化
%% 绘制滞回曲线
figure;
plot(x_dot_input, F, 'b-o', 'LineWidth', 1.5);
xlabel('速度(m/s)'); ylabel('恢复力(N)');
title('Bouc-Wen模型滞回曲线');
grid on;
%% 绘制滞回环三维图
figure;
plot3(x_dot_input, z, F, 'r.');
xlabel('速度(m/s)'); ylabel('滞回位移(m)');
zlabel('恢复力(N)');
title('三维滞回环');
grid on;
参考代码 用于计算bouc-wen模型的动力响应 www.youwenfan.com/contentcsg/50851.html
五、关键改进点
-
刚度退化修正
引入退化因子α描述刚度衰减:alpha = 0.95; % 刚度保持率 F = alpha*params.lambda1*x_dot_input + (1-alpha)*params.k*z; -
捏缩效应处理
添加捏缩函数限制滞回环尖峰:zeta = 0.1; % 捏缩系数 F = F .* (1 - exp(-zeta*abs(z))); -
多自由度扩展
构建多自由度系统矩阵:M = diag([1, 0.5, 0.3]); % 质量矩阵 C = diag([0.1, 0.05, 0.02]); % 阻尼矩阵 K = diag([200, 150, 100]); % 刚度矩阵
六、工程应用示例
1. 防屈曲支撑验证
% 加载试验数据
load('brb_test_data.mat'); % 包含F_exp和x_dot_exp
% 模型拟合
params.fitted = nlinfit(x_dot_exp, F_exp, @(params, x) ...
params.lambda1*x + (1-params.lambda1)*params.k*boucwen_z(x,params), ...
[0.8, 1.8e5, 1.2, 0.25, 0.75, 1.5]);
% 残差分析
figure;
plotResiduals(params.fitted, x_dot_exp, F_exp);
2. 地震响应分析
% 读取地震波
[time, accel] = read_seismic_wave('elcentro.txt');
% 时程分析
num_steps = length(time);
F_total = zeros(size(accel));
for i = 1:num_steps
x_dot = accel(i);
z = ode45(@(t,z) boucwen_ode(t,z,x_dot,params), [time(i), time(i)+0.001], z_prev);
F_total(i) = params.lambda1*x_dot + (1-params.lambda1)*params.k*z(end);
end
% 谱分析
[S,F] = pwelch(F_total, [], [], [], 1000);
plot(F, 10*log10(S));
七、完整代码结构
BoucWen_Model/
├── src/
│ ├── boucwen_ode.m % 微分方程
│ ├── params.m % 参数设置
│ └── plot_utils.m % 可视化工具
├── examples/
│ ├── brb_analysis.m % 防屈曲支撑案例
│ └── seismic_response.m % 地震响应案例
├── data/
│ ├── test_wave.mat % 测试激励
│ └── exp_data.mat % 试验数据
└── README.md
八、典型输出结果
- 滞回曲线:呈现典型梭形滞回环,具有明确的屈服平台和捏缩效应
- 时程曲线:显示恢复力与输入速度的相位滞后特性
- 功率谱:在地震激励下呈现0.3-1.5Hz主频能量集中
九、参考文献
Bouc R. Mathematical model for hysteresis[J]. 1971
高向宇. 防屈曲支撑恢复力模型研究[J]. 工程力学,2011