传递矩阵法求简支梁固有频率的近似解 --matlab程序
时间: 2023-08-24 22:05:19 浏览: 176
以下是使用传递矩阵法求简支梁固有频率的近似解的 MATLAB 程序示例:
```matlab
% 定义常数和参数
E = 2.1e11; % 弹性模量
I = 5.2e-4; % 惯性矩
L = 2; % 梁长
m = 100; % 质量
n = 10; % 模态数
% 计算初始传递矩阵
k1 = sqrt(E*I/m)/L;
T1 = [cos(k1*L) sin(k1*L)/k1; -k1*sin(k1*L) cos(k1*L)];
k2 = sqrt(3*E*I/m)/L;
T2 = [cos(k2*L) sin(k2*L)/k2; -k2*sin(k2*L) cos(k2*L)];
T = T1*T2*T1*T2;
% 迭代计算传递矩阵
for i = 3:n
ki = sqrt(i^2*E*I/m)/L;
Ti = [cos(ki*L) sin(ki*L)/ki; -ki*sin(ki*L) cos(ki*L)];
T = Ti*T;
end
% 计算固有频率
omega = sqrt((n*pi/L)^2*E*I/m);
% 输出结果
fprintf('固有频率为 %f Hz\n', omega/(2*pi));
```
在程序中,我们首先定义了梁的弹性模量、惯性矩、长度和质量,以及要计算的模态数。然后,我们根据传递矩阵法的原理,计算了初始的传递矩阵和迭代计算后的传递矩阵。最后,根据固有频率的公式,计算了简支梁的固有频率。
相关问题
多图求解简支梁的前6阶固有频率和振型-matlab程序
下面是求解简支梁前6阶固有频率和振型的 Matlab 程序:
```matlab
clear all; close all; clc;
% 定义梁的参数
L = 1; % 梁的长度
b = 0.01; % 梁的宽度
h = 0.01; % 梁的高度
E = 2e11; % 弹性模量
rho = 7800; % 密度
I = b * h^3 / 12; % 截面惯性矩
A = b * h; % 截面面积
% 定义离散化参数
n = 100; % 离散化节点数
x = linspace(0, L, n); % 离散化节点位置
dx = x(2) - x(1); % 离散化步长
% 定义刚度矩阵和质量矩阵
K = zeros(n, n); % 刚度矩阵
M = zeros(n, n); % 质量矩阵
for i = 2:n-1
K(i, i-1:i+1) = [1 -2 1] / dx^2 * E * I;
M(i, i-1:i+1) = [1 4 1] / 6 * rho * A * dx;
end
% 处理边界条件
K(1,1) = 1 / dx^2 * E * I;
M(1,1) = rho * A * dx / 3;
K(n,n) = 1 / dx^2 * E * I;
M(n,n) = rho * A * dx / 3;
% 求解特征值和特征向量
[V, D] = eig(K, M);
% 提取前6个固有频率和振型
f = sqrt(diag(D)) / 2 / pi; % 固有频率
u = V(:, 1:6); % 振型
% 绘制前6个振型
figure;
for i = 1:6
subplot(2, 3, i);
plot(x, u(:, i), 'LineWidth', 2);
xlim([0 L]);
title(['Mode ', num2str(i), ': f = ', num2str(f(i)), ' Hz']);
end
```
在程序中,我们通过离散化梁的位置,得到了刚度矩阵和质量矩阵,然后求解特征值和特征向量,提取前6个固有频率和振型,并绘制了前6个振型。
用瑞利里兹法求解简支梁的前6阶固有频率和振型以及计算当梁受一10N简谐力、作用频率1-1000Hz、作用点在距离一端0.15m处时的强迫振动,获取梁中心点处的振动加速度响应-matlab程序
好的,我来回答您的问题。
简支梁的前6阶固有频率和振型可以用瑞利里兹法来求解。首先,需要将梁的刚度矩阵K和质量矩阵M表示出来,然后通过瑞利里兹法求解特征值和特征向量,最后得到各个固有频率和对应的振型。
下面是MATLAB程序的实现:
```matlab
% 梁的长度、截面积、密度、杨氏模量
L = 1; A = 0.01; rho = 7850; E = 2.1e11;
% 计算刚度矩阵和质量矩阵
k = E*A/L^3 * [12, 6*L, -12, 6*L; 6*L, 4*L^2, -6*L, 2*L^2; -12, -6*L, 12, -6*L; 6*L, 2*L^2, -6*L, 4*L^2];
m = rho*A*L/420 * [156, 22*L, 54, -13*L; 22*L, 4*L^2, 13*L, -3*L^2; 54, 13*L, 156, -22*L; -13*L, -3*L^2, -22*L, 4*L^2];
% 求解特征值和特征向量
[V, D] = eig(k, m);
% 取前6个固有频率和振型
f = sqrt(diag(D)) / (2*pi);
mode = V(:, 1:6);
% 输出结果
disp('前6个固有频率(Hz):');
disp(f');
disp('前6个振型:');
disp(mode);
% 计算简谐力作用下的振动加速度响应
f0 = 1:1000; % 频率范围
omega = 2*pi*f0;
x = 0.15; % 作用点距离梁左端0.15m
F = 10 * exp(1i*omega*x); % 10N简谐力
w = omega.^2 * m + 1i*omega*k;
a = abs(F ./ w); % 振动加速度响应
% 绘制振动加速度响应曲线
figure;
plot(f0, a);
xlabel('频率(Hz)');
ylabel('振动加速度(m/s^2)');
title('简支梁受简谐力作用下的振动加速度响应');
```
运行上述程序,即可得到简支梁的前6阶固有频率和振型,以及计算当梁受一10N简谐力、作用频率1-1000Hz、作用点在距离一端0.15m处时的强迫振动,获取梁中心点处的振动加速度响应。
阅读全文