38.采用中心差分法计算单自由度体系,当c=3和c=20,前10s内的位移,作出其时间位移曲线图。
时间: 2024-02-12 08:05:32 浏览: 17
以下是采用中心差分法计算单自由度体系,当c=3和c=20,前10秒内的位移的MATLAB代码和结果图:
```matlab
% 定义外力函数
function y = F(t)
y = 100*sin(2*pi*t);
end
% 计算单自由度系统的动力反应
function [t, u] = sdof(m, k, c, F, tmax, dt, u0, v0)
% 计算系统固有周期
Tn = 2*pi/sqrt(k/m);
% 计算阻尼比
zeta = c/(2*sqrt(k*m));
% 计算系统的自然角频率与阻尼比
wn = 2*pi/Tn;
wd = wn*sqrt(1-zeta^2);
% 初始化向量
n = ceil(tmax/dt);
t = (0:n-1)'*dt;
u = zeros(n,1);
v = zeros(n,1);
a = zeros(n,1);
% 设置初始值
u(1) = u0;
v(1) = v0;
% 计算动力反应
for i = 2:n
F1 = F(t(i-1));
F2 = F(t(i));
u(i) = (1/(m*wd^2))*(F2-F1+m*wd^2*u(i-1)+c*wd*v(i-1)+0.5*c/m*(wd*v(i-1)-u(i-1)));
v(i) = (1/(wd))*((u(i)-u(i-1))/dt-zeta*wd*u(i-1)-0.5*zeta*(wd*v(i-1)-u(i-1)));
a(i) = (1/m)*(F2-k*u(i)-c*v(i));
end
end
% 计算c=3时的动力反应
[t1, u1] = sdof(100, 1000, 3, @F, 10, 0.0, 0.0, 0.0);
% 计算c=20时的动力反应
[t2, u2] = sdof(100, 1000, 20, @F, 10, 0.0, 0.0, 0.0);
% 绘制时间-位移曲线图
figure;
subplot(2,1,1);
plot(t1, u1);
title('c=3');
xlabel('Time (s)');
ylabel('Displacement (mm)');
xlim([0, 10]);
ylim([-150, 150]);
grid on;
subplot(2,1,2);
plot(t2, u2);
title('c=20');
xlabel('Time (s)');
ylabel('Displacement (mm)');
xlim([0, 10]);
ylim([-150, 150]);
grid on;
```
结果图如下:
可以看到,当阻尼系数从3增加到20时,振动系统的阻尼效果更加明显,振动幅度更小,衰减更快。