matlab求解多自由度振动系统,【2017年整理】1-《机械振动基础》大作业,基于matlab的多自由度振动.doc...
时间: 2024-03-14 20:46:45 浏览: 97
要用MATLAB求解多自由度振动系统,可以按照以下步骤进行:
1. 建立系统的运动方程:根据系统的动力学方程,建立多自由度振动系统的运动方程,可以采用拉格朗日方程或牛顿第二定律等方法。
2. 将运动方程转化为矩阵形式:将多自由度振动系统的运动方程转化为矩阵形式,可以得到系统的状态空间矩阵。
3. 求解系统的特征值和特征向量:使用MATLAB中的eig函数,求解系统的特征值和特征向量。
4. 绘制系统的振型图和频率响应曲线:利用特征向量,可以绘制系统的振型图和频率响应曲线,进一步分析系统的动态特性。
以下是一个简单的例子,演示了如何用MATLAB求解一个三自由度振动系统:
```matlab
%定义系统的参数
m = [2; 3; 4]; %质量
k = [20, -10, 0; -10, 30, -20; 0, -20, 40]; %刚度
c = [0.5, -0.2, 0; -0.2, 0.8, -0.5; 0, -0.5, 1]; %阻尼
%建立系统的运动方程
A = [zeros(3), eye(3); -inv(m)*k, -inv(m)*c];
B = [zeros(3); eye(3)];
C = eye(6);
D = zeros(6);
%求解系统的特征值和特征向量
[V, omega] = eig(A);
%绘制系统的振型图
x1 = V(1:3, 1);
x2 = V(1:3, 2);
x3 = V(1:3, 3);
subplot(3, 1, 1);
plot(x1);
title('mode 1');
subplot(3, 1, 2);
plot(x2);
title('mode 2');
subplot(3, 1, 3);
plot(x3);
title('mode 3');
%绘制系统的频率响应曲线
f = logspace(-1, 2, 1000);
for i = 1:length(f)
H = C*inv(j*2*pi*f(i)*eye(6)-A)*B+D;
G(i) = norm(H);
end
figure;
semilogx(f, 20*log10(G));
xlabel('Frequency (Hz)');
ylabel('Magnitude (dB)');
```
这段代码定义了一个三自由度振动系统,建立了系统的运动方程,并使用MATLAB的eig函数求解了系统的特征值和特征向量。然后,利用特征向量,绘制了系统的振型图和频率响应曲线,用于分析系统的动态特性。