mxlzhenzhu 发表于 2015-3-31 11:29

复模态分析遇到的问题与经验总结

本帖最后由 hcharlie 于 2015-4-9 07:59 编辑

一直看书,主要关心比例阻尼系统,但是有的系统阻尼比较大,不合适比例阻尼,遂进一步看复模态的内容。

一直以为自己搞明白了{:4_67:},结果简单列了一下方程,发现一个很有趣的正交性问题还是没有彻底明白,详细内容见附件,恳请论坛大牛一起讨论。





不甚感激。
附件在此:

mxlzhenzhu 发表于 2015-4-8 22:43

本帖最后由 mxlzhenzhu 于 2015-4-9 08:56 编辑

我又问了一个愚蠢的问题,今天发现是因为编程的时候少加了一个.号造成的错误, 造成了正交性问题,结果让人浮想联翩{:3_47:};

MATLAB语法里面,转置和共轭转置是截然不同的概念,今日犯此错误算是刻骨铭心。先把前三种形式的复模态计算传函的MATLAB程序贴出来,感兴趣的可以看看,我的第四种矩阵形式的FRF计算就不再研究了。
<p>%% 复模态分析案列
%% mxl.2015-3-29
%% 31日,计算结果不理想,暂时不搞了。
%% 4月8日,共轭转置和转置是有严格区别的;
clear
close all
clc</p><p>
State_Choice='Second';</p><p>m1=1;m2=10;m3=5.3;m4=0.1;
c1=10;c2=19;c3=0.8;c4=100;
k1=1e6;k2=5e6;k3=2.5e5;k4=7e6;
M=[
    m1,0,0;
    0,m2,0;
    0,0,m3;
];
C=[
    c1,-c1,0;
    -c1,c1+c2,-c2;
    0,-c2,c2+c3;
];
K=[k1,-k1,0;
    -k1,k1+k2,-k2;
    0,-k2,k2+k3;
    ];</p><p>
% M=[
%   m1,0,0,0;
%   0,m2,0,0;
%   0,0,m3,0;
%   0,0,0,m4;
% ];
% C=[
%   c1,-c1,0,0;
%   -c1,c1+c2,-c2,0;
%   0,-c2,c2+c3,-c3;
%   0,0,-c3,c4+c3;
% ];
% K=[k1,-k1,0,0;
%   -k1,k1+k2,-k2,0;
%   0,-k2,k2+k3,-k3;
%   0,0,-k3,k3+k4;
%   ];
N=size(M,1);
indicei=1;
indicej=1;
%   %=====================================================================%
%   (1)State transform equation.
%   %=====================================================================%
if strcmp(State_Choice,'First')
    A=[
      C,K;
      K,zeros(size(M));
    ];</p><p>    B=[
      M,zeros(size(M));
      zeros(size(M)),-K;
      ];% I invented
    indiceii=indicei;
    indicejj=indicej+N;</p><p>elseif strcmp(State_Choice,'Second')
    A=[
      -M,zeros(size(M));
      zeros(size(M)),K;
      ];
   
    B=[
      zeros(size(M)),M;
      M,C;
    ];% Ji wen mei
    indiceii=indicei+N;
    indicejj=indicej+N;
elseif strcmp(State_Choice,'Third')
    A=[
      K,zeros(size(M));
      zeros(size(M)),-M;
      ];
   
    B=[
      C,M;
      M,zeros(size(M))];% D.J.Ewins
    indiceii=indicei;
    indicejj=indicej;   
else
    B=[
      M,C;
      zeros(size(M)),M;
    ];
    A=[
      zeros(size(M)),K;
      -M,zeros(size(M));
      ];% my word
    indiceii=indicei;
    indicejj=indicej+N;
end
%   %=====================================================================%
%   (2)Eigen Equ.
%   %=====================================================================%
=eig(A,-B);
nameda=diag(D);
% return
%   %=====================================================================%
%   (3)FRF, modal superpostion
%   %=====================================================================%</p><p>frequency=';
H=cell(size(frequency));
% 基于复振型和复特征值计算FRF
for loopi=1:numel(frequency)
    omega=2*pi*frequency(loopi);
    for loop=1:numel(nameda)
      ar=V(:,loop).'*B*V(:,loop);
      if loop>1
            H{loopi,1}=H{loopi,1}+V(:,loop)*V(:,loop).'/ar/(1j*omega-nameda(loop));
      else
            H{loopi,1}=V(:,loop)*V(:,loop).'/ar/(1j*omega-nameda(loop));
      end
    end
end</p><p> </p><p> </p><p> </p><p>FRF=zeros(size(frequency));
for loop=1:numel(frequency)
    FRF(loop,1)=H{loop,1}(indiceii,indicejj);
end</p><p>figure
subplot(2,1,1)
plot(frequency,abs(FRF),'r')
subplot(2,1,2)
plot(frequency,angle(FRF),'k')
%   %=====================================================================%
%   (4)FRF, direct
%   %=====================================================================%
omega=2*pi*frequency;
H=cell(size(frequency));
for loop=1:numel(frequency)
    H{loop,1}=inv(K-omega(loop)^2*M+1j*omega(loop)*C);
end</p><p> </p><p>FRF=zeros(size(frequency));
for loop=1:numel(frequency)
    FRF(loop,1)=H{loop,1}(indicei,indicej);
end</p><p>figure
subplot(2,1,1)
plot(frequency,abs(FRF),'r')
subplot(2,1,2)
plot(frequency,angle(FRF),'k')
</p>

mxlzhenzhu 发表于 2015-4-8 22:45

Two wrongs make a right
{:{03}:}{:{03}:}{:{03}:}{:{03}:}{:{03}:}

zswseu 发表于 2015-4-10 09:58

感觉像ERA中的一段。
很多理论都很深奥的。
页: [1]
查看完整版本: 复模态分析遇到的问题与经验总结