matlab编程(1).计算在el centro波作用下,单自由度结构弹塑性位移响应和绝对加速度时程。 (2).该位移时程的振动周期 (3).在该结构质量对应的10%重力作为最大地震惯性力加载的时候屈服,此时刚度为零,求出位移响应
时间: 2023-06-13 13:06:57 浏览: 236
matlab计算单自由度的地震反应的程序.docx
以下是针对你的三个问题的回答:
1. 计算在el centro波作用下,单自由度结构弹塑性位移响应和绝对加速度时程
在MATLAB中,可以使用ode45函数来求解单自由度结构的弹塑性位移响应和绝对加速度时程。具体步骤如下:
1)定义单自由度结构的初始条件和参数:
```matlab
m = 1; % 质量
k = 1; % 刚度
c = 0.1; % 阻尼系数
fy = 5; % 屈服力
u0 = 0; % 初始位移
v0 = 0; % 初始速度
tspan = [0 20]; % 时间范围
```
2)定义el centro波的输入函数:
```matlab
function f = elcentro(t)
% el centro波的输入函数
f = 0;
if t >= 0 && t <= 5
f = 0.2 * t;
elseif t > 5 && t <= 15
f = 1 - 0.05 * (t - 5);
elseif t > 15 && t <= 20
f = 0.5 - 0.1 * (t - 15);
end
end
```
3)定义单自由度结构的运动方程:
```matlab
function [udot, vdot] = eqm(t, u, v, m, k, c, fy, f)
% 单自由度结构的运动方程
udot = v;
if u > 0
udot = v;
if u < fy / k
udot = v + f / m - k / m * u;
else
udot = v + f / m - k / m * u - c / m * sign(v);
end
end
vdot = udot;
end
```
4)调用ode45函数求解:
```matlab
[t, y] = ode45(@(t, y) eqm(t, y(1), y(2), m, k, c, fy, elcentro(t)), tspan, [u0, v0]);
u = y(:, 1);
a = y(:, 2);
```
2. 该位移时程的振动周期
可以通过寻找位移时程的第一个峰值和第二个峰值之间的时间间隔来估算振动周期。具体实现代码如下:
```matlab
% 找到第一个峰值
[pks, locs] = findpeaks(u);
pk1 = pks(1);
loc1 = locs(1);
% 找到第二个峰值
[pks, locs] = findpeaks(u(loc1:end));
pk2 = pks(1);
loc2 = locs(1) + loc1 - 1;
% 计算振动周期
T = (loc2 - loc1) * (t(2) - t(1));
```
3. 在该结构质量对应的10%重力作为最大地震惯性力加载的时候屈服,此时刚度为零,求出位移响应
在该结构质量对应的10%重力作为最大地震惯性力加载的时候,最大地震惯性力为:
```matlab
F = m * 10 / 100;
```
此时刚度为零,因此运动方程变为:
```matlab
function [udot, vdot] = eqm(t, u, v, m, fy, f)
% 单自由度结构的运动方程
udot = v;
if u > 0
udot = v;
if u < fy / k
udot = v + f / m;
else
udot = v + f / m - c / m * sign(v);
end
end
vdot = udot;
end
```
然后可以使用与第一问相同的方法求解该结构的位移响应:
```matlab
k = 0; % 刚度
c = 0.1; % 阻尼系数
u0 = 0; % 初始位移
v0 = 0; % 初始速度
[t, y] = ode45(@(t, y) eqm(t, y(1), y(2), m, fy, F), tspan, [u0, v0]);
u = y(:, 1);
```
阅读全文