单自由度系统在正弦激励下的受迫振动matlab代码
时间: 2024-02-21 19:57:40 浏览: 173
以下是一个简单的单自由度系统在正弦激励下的受迫振动的 Matlab 代码示例:
```matlab
% 定义系统参数
m = 1; % 质量
k = 10; % 刚度
c = 0.5; % 阻尼系数
A = 0.2; % 激励力振幅
w = 2; % 激励力频率
% 定义时间范围和步长
t_start = 0;
t_end = 20;
dt = 0.01;
% 定义初始条件
x0 = 0; % 初始位移
v0 = 0; % 初始速度
% 定义正弦激励函数
f = @(t) A*sin(w*t);
% 定义欧拉法求解函数
euler = @(x, v, dt) [x + dt*v, v + dt*(-k*x/m - c*v/m + f(dt))];
% x' = v, v' = -kx/m - cv/m + f(t)
% 初始化数组
t = t_start:dt:t_end;
x = zeros(length(t), 1);
v = zeros(length(t), 1);
% 设置初始条件
x(1) = x0;
v(1) = v0;
% 使用欧拉法求解微分方程
for i = 2:length(t)
[x(i), v(i)] = euler(x(i-1), v(i-1), dt);
end
% 绘制位移随时间变化的图像
plot(t, x);
xlabel('Time');
ylabel('Displacement');
title('Forced Vibration of Single Degree of Freedom System');
```
这个代码定义了一个单自由度系统的质量、刚度和阻尼系数,并用欧拉法求解了微分方程,得到了系统在正弦激励下的位移随时间变化的图像。你可以根据需要修改系统参数和激励函数来进行不同的模拟和分析。
阅读全文