振型矩阵与正则振型矩阵

%由振型矩阵mode_vec(特征列向量组成)、质量矩阵M求正则振型矩阵mode_vec_n
function mode_vec_n= mode_n(mode_vec,M)
M_p=mode_vec'*M*mode_vec;  %求主质量阵
n=length(mode_vec);
mode_vec_n=zeros(n);
for i=1:n
     mode_vec_n(:,i)=mode_vec(:,i)/sqrt(M_p(i,i));
end
%mode_vec_n'*M*mode_vec_n=I
%mode_vec_n^(-1)=mode_vec_n'*M
%I*q_n"+[w_n^2]*q_n=[0]
%x=mode_vec_n*q_n
%正则坐标 q_n=mode_vec_n^(-1) *x 

 

%%%%%%%%---------------------------------------------------------------------------------------------------

%SH760小轿车空载主要参数
clear;
m=1340;
a=1.54;
b=1.29;
l=a+b;
Ic=2395; %绕质心的转动惯量
rou=sqrt(Ic/m);
k1=40*1000;
k2=44*1000;
M=[m*(b^2+rou^2)/l^2,m*(a*b-rou^2)/l^2;m*(a*b-rou^2)/l^2,m*(a^2+rou^2)/l^2];
K=[k1,0;0,k2];
 
%用matlab特征值分解法求主振型------------------------------------------------
 
[eig_vec,eig_val] = eig(inv(M)*K);

 

>> mode_vec_n=mode_n(eig_vec,M)

mode_vec_n =

    0.0383    0.0163
   -0.0167    0.0341

>> mode_vec_n'*M*mode_vec_n

ans =

    1.0000   -0.0000
         0    1.0000

>> mode_vec_n'*K*mode_vec_n

ans =

   71.0537         0
         0   61.8142

>> eig_val

eig_val =

   71.0537         0
         0   61.8142

以下是一个简单的 Matlab 代码实现多自由度体系振型叠加法求解无阻尼强迫振动的过程。 首先定义系统的参数,包括质量矩阵、刚度矩阵和外力向量: ```matlab % 定义系统参数 M = [1 0; 0 2]; % 质量矩阵 K = [3 -1; -1 2]; % 刚度矩阵 F = [2*sin(2*t); 0]; % 外力向量 ``` 接着,由于采用正则坐标求解,需要计算正则坐标变换矩阵: ```matlab % 计算正则坐标变换矩阵 [V, D] = eig(K, M); % 求解广义特征值问题 P = V' * M; % 正则坐标变换矩阵 ``` 然后,根据正则坐标求解每个振型的振幅和相位,将其叠加得到总振动响应: ```matlab % 叠加各振型的振动响应 X = zeros(length(F), 1); % 初始化总振动响应 for i = 1:length(F) w = sqrt(D(i, i)); % 求解振型频率 C = P(i, :) * F / (w^2 - D(i, i)); % 求解振幅 phi = atan2(w * (P(i, 2) * F(1) - P(i, 1) * F(2)), ... w^2 - D(i, i) - w * (P(i, 1)^2 * F(1) + P(i, 2)^2 * F(2))); % 求解相位 X = X + C * V(:, i) * sin(w * t + phi); % 叠加振动响应 end ``` 最后,将得到的总振动响应作图展示: ```matlab % 绘制振动响应图像 plot(t, X); xlabel('Time (s)'); ylabel('Displacement (m)'); legend('m1', 'm2'); ``` 完整的代码如下: ```matlab % 定义时间范围和时间步长 t = 0:0.01:10; % 定义系统参数 M = [1 0; 0 2]; % 质量矩阵 K = [3 -1; -1 2]; % 刚度矩阵 F = [2*sin(2*t); 0]; % 外力向量 % 计算正则坐标变换矩阵 [V, D] = eig(K, M); % 求解广义特征值问题 P = V' * M; % 正则坐标变换矩阵 % 叠加各振型的振动响应 X = zeros(length(F), 1); % 初始化总振动响应 for i = 1:length(F) w = sqrt(D(i, i)); % 求解振型频率 C = P(i, :) * F / (w^2 - D(i, i)); % 求解振幅 phi = atan2(w * (P(i, 2) * F(1) - P(i, 1) * F(2)), ... w^2 - D(i, i) - w * (P(i, 1)^2 * F(1) + P(i, 2)^2 * F(2))); % 求解相位 X = X + C * V(:, i) * sin(w * t + phi); % 叠加振动响应 end % 绘制振动响应图像 plot(t, X); xlabel('Time (s)'); ylabel('Displacement (m)'); legend('m1', 'm2'); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值