查看: 17028|回复: 71

[线性振动] 多自由度 自由振动 MATLAB 仿真

  [复制链接]
发表于 2006-11-6 09:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?我要加入

x
刚刚做的振动初步研究

多自由度无阻尼 系统自由振动分析
a1.GIF
M1=1kg  M2=10kg  k1=10N/m  k2=100N/m  
初始条件:x(0)=0.05m  x’(0)=0 m/s  y(0)=0 m  y’(0)=0m/s;

  1. clear
  2. M=[1 0;0 10]             %质量矩阵
  3. K=[10 -10; -10 110]       % 刚度矩阵
  4. KM=inv(M)*K           %动力矩阵
  5. [P,W2]=eig(KM);         %求解特征值 和特征向量
  6. P1=P(1,:);
  7. P2=P(2,:);
  8. Mo=[1 1; P2./P1];     %模态
  9. f=sqrt(W2)/(2*pi)     %固有频率
  10. A=[0 1 0 0;-10 0 10 0; 0 0 0 1; 1 0 -11 0];
  11. B=[0; 0 ;0 ;0];
  12. C=[1 0 0 0; 0 0 1 0];
  13. D=0;
  14. sys=ss(A,B,C,D);     %状态方程
  15. t=0:0.01:12;
  16. [y,t1,x]=initial(sys,[0 0 0.05 0],t); %初始条件仿真
  17. subplot(211)
  18. plot(t,y);
  19. Y1=[1 0]*y';
  20. N=1024;
  21. w=fft(Y1,N);         %对输出信号 频谱分析         
  22. subplot(212)
  23. plot(abs(w));
复制代码

经计算结果如下:
a2.GIF

固有频率W^2 =
        7.2984       0
         0      13.7016

振型 Mod=
  1.0000    1.0000
    0.2702    -0.3702


a3.GIF
M1=1kg  M2=2Kg  k1=10N/m  k2=40N/m
初始条件:(1) X(0)=0.028078   X’(0)=0  Y(0)=0.1  Y’(0)=0
           (2)   X(0)=0.17808   X’(0)=0  Y(0)=-0.1  Y’(0)=0

固有频率W^2 =
        7.1922         0
         0        27.8078

振型Mo =
    1.0000    1.0000
    0.2808   -1.7808


a4.GIF

[ 本帖最后由 yejet 于 2006-11-7 15:52 编辑 ]

点评

赞成: 5.0
赞成: 5
好帖子@!可以发到Matlab讨论区,也很不错的!呵呵  发表于 2014-3-27 18:13

评分

1

查看全部评分

回复
分享到:

使用道具 举报

 楼主| 发表于 2006-11-6 09:32 | 显示全部楼层

第二个系统的程序

  1. clear
  2. M=[1 0;0 2]          %质量矩阵
  3. K=[10 -10; -10 50]   % 刚度矩阵
  4. KM=inv(M)*K           %动力矩阵
  5. [P,W2]=eig(KM);       %求解特征值 和特征向量
  6. P1=P(1,:);
  7. P2=P(2,:);
  8. Mo=[1 1; P2./P1];     %模态
  9. f=sqrt(W2)/(2*pi)     %固有频率
  10. A=[0 1 0 0;-10 0 10 0; 0 0 0 1; 5 0 -25 0];
  11. B=[0; 0 ;0 ;0];
  12. C=[1 0 0 0; 0 0 1 0];
  13. D=0;
  14. sys=ss(A,B,C,D);     %状态方程
  15. t=0:0.01:10;
  16. [y1,t1,x1]=initial(sys,[0.1 0 0.028078 0],t); %初始条件仿真 (只有一阶模态)
  17. [y2,t2,x2]=initial(sys,[-0.1 0 0.17808 0],t);% 只有二阶模态的初始条件
  18. [y3,t3,x3]=initial(sys,[0.1 0 -0.1 0],t);    % 一般条件
  19. subplot(311);
  20. plot(t1,y1);
  21. subplot(312);
  22. plot(t2,y2);
  23. subplot(313);
  24. plot(t3,y3);
复制代码

[ 本帖最后由 yejet 于 2006-11-7 15:52 编辑 ]

评分

1

查看全部评分

发表于 2006-11-9 00:06 | 显示全部楼层
楼主,有个问题呀.什么是动力矩阵,这种求固有频率的方法能详细说说吗>?谢谢!
发表于 2006-11-9 11:37 | 显示全部楼层
原帖由 luckromeo 于 2006-11-9 00:06 发表
楼主,有个问题呀.什么是动力矩阵,这种求固有频率的方法能详细说说吗>?谢谢!


动力矩阵:
inv(M)*K

clough的书上有说。

评分

1

查看全部评分

发表于 2006-11-22 10:46 | 显示全部楼层
原帖由 linqus 于 2006-11-9 11:37 发表


动力矩阵:
inv(M)*K

clough的书上有说。



其实这两行:
KM=inv(M)*K           %动力矩阵
[P,W2]=eig(KM);       %求解特征值 和特征向量

可以通过一个行来搞定:
[P,W2]=eig(K,M) ;          %也可以直接求广义特征值 和特征向量

[ 本帖最后由 junstin 于 2006-11-22 10:47 编辑 ]

评分

1

查看全部评分

发表于 2006-11-29 15:12 | 显示全部楼层
给出的程序是两个自由度吧
要是多个自由度呢
振型应该怎么求啊????????
发表于 2006-11-30 21:31 | 显示全部楼层
上面楼主我发现你的一个错误,系统矩阵和动力矩阵之间存在互逆
KM=inv(M)*K %系统矩阵
inv(K)*M     %动力矩阵
你正好掉了个头,摘自师汉民 机械振动系统
发表于 2006-11-30 21:59 | 显示全部楼层
能给出具体算式嘛,程序不是很看的懂
发表于 2006-12-1 15:54 | 显示全部楼层
A=[0 1 0 0;-10 0 10 0; 0 0 0 1; 5 0 -25 0];
B=[0; 0 ;0 ;0];
C=[1 0 0 0; 0 0 1 0];
D=0;
sys=ss(A,B,C,D);     %状态方程

状态方程我不能理解啊,另外initial的命令能不能详细介绍一下,另外楼主能不能介绍一下有关振动在应用matlab的方法获推荐一些资料,我才疏学浅,以前学matlab都是结合信号处理学的,而振动的很多概念也很难理解,没想到这两个结合了起来,开了眼界,希望楼主能在程序中多一些注释,或者在程序前后多一些说明,照顾一下这些后进者,谢谢!
发表于 2006-12-2 15:03 | 显示全部楼层

用你的程序仿真后,怎么结果和你的结果不一致啊?

呵呵,我仿真后的结果和你楼主的不一样,不知道为何?

第一个算例的频率是

f =

    0.4300         0
         0    0.5891


第二个算例的频率是
f =

    0.4268         0
         0    0.8393
 楼主| 发表于 2006-12-29 20:42 | 显示全部楼层

答 13# 感谢大家支持

由刚度矩阵 所求的 特征值为 Wn^2 (固有频率  为 叫频率 单位为 弧度/秒)
进行 开方 得到为Wn (固有频率)  除以 2PI  即 单位为 HZ  所以 会出现 上述值  进行频谱分析时 间隔频率为 采样频率/采样点数
 楼主| 发表于 2006-12-29 20:43 | 显示全部楼层

答 13#

由刚度矩阵 所求的 特征值为 Wn^2 (固有频率  为 叫频率 单位为 弧度/秒)
进行 开方 得到为Wn (固有频率)  除以 2PI  即 单位为 HZ  所以 会出现 上述值  进行频谱分析时 间隔频率为 采样频率/采样点数
发表于 2007-3-8 16:02 | 显示全部楼层
如果是四自由度的系统一下部分要怎么设置呢?我看了帮助,感觉不是很懂,能不能具体讲一下ss?
A=[0 1 0 0;-10 0 10 0; 0 0 0 1; 5 0 -25 0];
B=[0; 0 ;0 ;0];
C=[1 0 0 0; 0 0 1 0];
D=0;
sys=ss(A,B,C,D);     %状态方程
 楼主| 发表于 2007-3-13 09:29 | 显示全部楼层

回复 #14 wendyrong 的帖子

对于任何 一个多自由度 振动系统 首先 就是要得出 系统的动力学 方程]
即 得到 质量矩阵M 刚度矩阵 K
关于 求相应仿真部分 A,B,C,D 的求得  看一下现代控制论部分
发表于 2007-3-22 20:21 | 显示全部楼层
楼主分析的很好,值得学习
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

快速回复 返回顶部 返回列表