yanyongju 发表于 2006-11-21 19:01

多自由度阻尼系统固有振型的MATLAB求解程序

function =vbr_sf(m,d,k)
%vbr_sfvbr_sf(m,d,k)
%      =vbr4(m,d,k)
%      function vbr_sf finds the mode shapes and natural frequencies of
%      a linear second order matrix equation.
%      =vbr_sf(m,k) finds the mode shapes and natural frequencies
%      for the undamped case.
if nargin==2
k=d;
=eig(m\k);
w=sqrt(w);
end
if nargin==3
if norm(d/m*k-k/m*d) < 1e-8*norm(k/m*d)
    disp('Damping is proportional, eigenvectors are real.')
    =eig(m\k);
    w=sqrt(w);
    zeta=(v'*m*v)\(v'*d*v)/2/w;
   else
    disp('Damping is non-proportional, eigenvectors are complex.')
    a=;
    =eig(a);
    w=abs(w1);
    zeta=-real(w1)/w;
end
end
w=diag(w);zeta=diag(zeta);

vib 发表于 2006-11-27 20:56

学习了,主要用到了eig这个函数,这样振动的那些详细概念就没有必要了,直接就计算出来了,呵呵!不过m/k应该是k/m吧。矩阵相除看起来很吓人,我没有这样直接除过,晚上好好想想,你这连模态矩阵也求了出来,真不错!nargin==3时d是阻尼?zeta是什莫?

yanyongju 发表于 2006-11-28 10:38

阻尼是非线性的话,特征值是复值,zeta表示特征值的实部,这是一般情况,有时候虚部也能代表系统的固有振型,这时候就要取虚部。

vib 发表于 2006-12-1 16:26

我只知道阻尼有一种叫做比例阻尼,就是把阻尼阵视作质量阵和刚度阵的线性组合,其他的情况我们都没有学,什莫非线性阻尼,就是非比例阻尼吗?我不了解,你能浅显的解释一下吗?我看到eig后的特征值对应的模态向量已经正规化了。而矩阵分左除和右除是我弄错了,不过我看到另一位网友这样写的,好像比较容易记:
km=inv(m)*k;

yanyongju 发表于 2006-12-6 14:28

有些振动系统的阻尼可以解藕,就像比例阻尼就是其中的一种,把阻尼阵视作质量阵和刚度阵的线性组合,这样就可以将振动系统解藕,便于求解。
但是并不是所用的振动系统都可以解藕,而且大多数系统是不可以解藕的,系统是否可以解藕,取决于系统的质量矩阵,阻尼矩阵和刚度矩阵之间的相互关系MK'C=CK'M,CM'K=KM'C,MC'K=KC'M,具体可以看看胡海岩老师的《机械振动与冲击》。
非线性阻尼是指系统的阻尼矩阵随着时间速度的变化而不断的变化,并不是一个恒定的矩阵,而非比例阻尼是指系统的阻尼矩阵不能有质量矩阵和刚度矩阵来线性表示。

vib 发表于 2006-12-6 15:38

那个非线性的看起来确实比较麻烦,我看到一本书里把阻尼是这样分得:粘性阻尼和结构阻尼。粘性阻尼和结构阻尼里都专门列出比例粘性阻尼和结构粘性阻尼为一类,剩余的阻尼情况称为一般阻尼另列一类。这种分法可能和线性非线性又是从不同的角度出发得到的吧。一般学机械的常见的是那种情况?这几种好像都不太容易,连最简单的比例阻尼书中都往往很少的篇幅就带过了。

yanyongju 发表于 2006-12-16 00:10

一般最简单的是线性阻尼,最常见的是非线性阻尼,

heeric 发表于 2011-3-15 09:20

正慢慢学习这个程序
那个应该是 =eig(k\m)吧

meiyongyuandeze 发表于 2011-3-18 11:19

要慎重的用EIG函数哦!
页: [1]
查看完整版本: 多自由度阻尼系统固有振型的MATLAB求解程序