matlab编写程序求多跨铰接弹性地基梁的传递矩阵求李雅普诺夫指数
时间: 2023-07-13 17:25:01 浏览: 119
以下是MATLAB程序的一个大致框架,供参考:
1. 定义模型:定义梁的几何尺寸、材料参数、支座刚度等。
2. 建立动力学方程:将梁的弯曲振动方程和轴向振动方程转化为矩阵形式。
3. 求解特征值和特征向量:使用MATLAB的eig函数求解动力学方程的特征值和特征向量。
4. 计算传递矩阵:根据特征向量和特征值,计算传递矩阵。
5. 求解李雅普诺夫指数:使用MATLAB的lyap函数求解传递矩阵的李雅普诺夫指数。
以下是一个简单的MATLAB程序,供参考:
```matlab
% 定义模型参数
n = 5; % 跨数
L = 10; % 跨距
h = 1; % 高度
w = 0.1; % 宽度
E = 1e9; % 弹性模量
rho = 7800; % 密度
A = h * w; % 横截面积
I = w * h^3 / 12; % 惯性矩
k1 = 1e8; % 左端简支弹簧刚度
k2 = 1e8; % 右端简支弹簧刚度
% 建立动力学方程
M = zeros(6*n);
K = zeros(6*n);
for i = 1:n
M((i-1)*6+1:i*6, (i-1)*6+1:i*6) = [rho*A*L/3, 0, 0, 0, 0, 0;
0, rho*I, 0, 0, 0, 0;
0, 0, rho*A*L/3, 0, 0, 0;
0, 0, 0, rho*I, 0, 0;
0, 0, 0, 0, rho*A*L/3, 0;
0, 0, 0, 0, 0, rho*I];
K((i-1)*6+1:i*6, (i-1)*6+1:i*6) = [E*I/L^3, 0, -E*I/L^3, 0, 0, 0;
0, 12*E*I/L^3, 0, 0, 0, 6*E*I/L^2;
-E*I/L^3, 0, E*I/L^3, 0, 0, 0;
0, 0, 0, 12*E*I/L^3, 0, -6*E*I/L^2;
0, 0, 0, 0, E*I/L^3, 0;
0, 6*E*I/L^2, 0, -6*E*I/L^2, 0, 4*E*I/L];
if i == 1
K(1:6, 1:6) = K(1:6, 1:6) + [k1/L, zeros(1,5);
zeros(5,1), zeros(5)];
end
if i == n
K(end-5:end, end-5:end) = K(end-5:end, end-5:end) + [zeros(5,1), zeros(5);
zeros(1,5), k2/L];
end
end
A1 = [zeros(6*n), eye(6*n); -inv(M)*K, zeros(6*n)];
A2 = [zeros(6*n), -inv(M); -K, zeros(6*n)];
A = [A1, A2];
% 求解特征值和特征向量
[V,D] = eig(A);
% 计算传递矩阵
T = V(1:6*n,:) * inv(V(6*n+1:end,:));
% 求解李雅普诺夫指数
alpha = lyap(A', eye(12*n));
l = real(eig(alpha));
```
请注意,以上代码仅为示例,实际情况可能会有所不同,具体实现需要根据实际情况进行调整。
阅读全文