集中质量法matlab
时间: 2023-06-02 13:02:56 浏览: 312
集中质量法(Point Mass Method)是一种简单的结构动力学分析方法,主要应用于小振动的结构分析。该方法将结构的质量集中于节点上,节点之间的刚度由节点之间的弹性元件表示。在该方法中,结构的自由度与节点数相等,因此适用于小型结构的分析。
以下是一种使用MATLAB进行集中质量法分析的示例:
1. 定义结构
假设我们要分析一个简单的三维框架结构,结构由4个节点和3个弹性元件组成,可以按照以下方式定义结构:
```
% 定义节点坐标
node(1,:) = [0 0 0];
node(2,:) = [3 0 0];
node(3,:) = [0 4 0];
node(4,:) = [3 4 0];
% 定义弹性元件,每个元件包含两个节点和刚度值
element(1,:) = [1 2 1000];
element(2,:) = [1 3 2000];
element(3,:) = [2 4 1500];
```
2. 计算质量矩阵
在集中质量法中,我们需要将结构的质量集中在节点上,并计算质量矩阵。假设每个节点的质量为1kg,则可以按照以下方式计算质量矩阵:
```
% 计算质量矩阵
M = eye(4);
for i=1:4
M(i,i) = sum(element(element(:,1)==i,3)) + sum(element(element(:,2)==i,3));
end
```
3. 计算刚度矩阵
刚度矩阵由弹性元件的刚度组成,可以按照以下方式计算:
```
% 计算刚度矩阵
K = zeros(12);
for i=1:3
node1 = element(i,1);
node2 = element(i,2);
k = element(i,3);
dx = node(node2,1) - node(node1,1);
dy = node(node2,2) - node(node1,2);
dz = node(node2,3) - node(node1,3);
L = sqrt(dx^2 + dy^2 + dz^2);
c = dx/L;
s = sqrt(1-c^2);
T = [c s 0 -c -s 0;
-s c 0 s -c 0;
0 0 1 0 0 0;
-c -s 0 c s 0;
s -c 0 -s -c 0;
0 0 0 0 0 1];
Ke = k/L * [1 -1; -1 1];
Ke = kron(Ke,T);
idx = [(node1-1)*3+1:(node1-1)*3+3 (node2-1)*3+1:(node2-1)*3+3];
K(idx,idx) = K(idx,idx) + Ke;
end
```
4. 求解动力方程
结构的振动方程可以表示为Mx'' + Kx = 0,其中x是结构的位移矩阵。我们可以使用MATLAB的eig函数求解该方程的特征值和特征向量:
```
% 求解动力方程
[V,D] = eig(K,M);
omega = sqrt(diag(D));
phi = V;
```
5. 计算模态质量和模态振型
模态质量是指每个模态的振动能量在各个节点间的分布情况,可以按照以下方式计算:
```
% 计算模态质量
Q = zeros(4);
for i=1:4
Q(i,:) = phi(:,i)' * M * phi(:,i);
end
```
模态振型是指每个模态的振动形态,可以按照以下方式绘制:
```
% 绘制模态振型
for i=1:4
figure;
plot3(node(:,1),node(:,2),node(:,3),'ko');
hold on;
scale = max(abs(phi(:,i))) * 0.1;
for j=1:3
node1 = element(j,1);
node2 = element(j,2);
x1 = node(node1,1) + scale * phi((node1-1)*3+1,i);
y1 = node(node1,2) + scale * phi((node1-1)*3+2,i);
z1 = node(node1,3) + scale * phi((node1-1)*3+3,i);
x2 = node(node2,1) + scale * phi((node2-1)*3+1,i);
y2 = node(node2,2) + scale * phi((node2-1)*3+2,i);
z2 = node(node2,3) + scale * phi((node2-1)*3+3,i);
plot3([x1 x2],[y1 y2],[z1 z2],'r-');
end
title(sprintf('Mode %d (omega = %.2f Hz)',i,omega(i)));
axis equal;
end
```
以上是使用MATLAB进行集中质量法分析的简单示例,可以根据实际情况进行调整和扩展。