声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5896|回复: 21

[线性振动] 振动方程 数值计算 特征频率

[复制链接]
发表于 2017-6-5 08:50 | 显示全部楼层 |阅读模式

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

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

x
对三自由度振动微分方程组采用线性加速度法进行数值计算,可以得到三个自由度的位移、速度及加速度的时程曲线,对三个自由度中某一自由度的加速度进行FFT变换时,从加速度的频响曲线中应该可以看到三个特征频率,却知道看两个,少了一个特征频率,请各位大侠指教。振动微分方程组的质量矩阵m=[1 0 0;0 1 0;0 0 1]刚度矩阵为k=50*[2 -1 0;-1 2 -2;0 -1 2],理论计算结果得到的三个特征频率为0.5825Hz,1.5915Hz,2.1741Hz。数值计算程序如下。
close all;
clc;
clear all;
m=[1 0 0;0 1 0;0 0 1];                                           %质量矩阵
% c=[2 -1 0;-1 2 -1;0 -1 2];                                       %阻尼矩阵
c=[0 0 0;0 0 0;0 0 0];      
% k=50*[2 -1 0;-1 2 -2;0 -1 2];
k=50*[2 -1 0;-1 2 -2;0 -1 2];                                    %刚度矩阵
x0=[1 1 1]';                                                     %初位移
v0=[1 1 1]';                                                     %初速度
delt=1/(12);                                                     %时间步长
fs=1/delt;
time=25;                                                         %仿真时间
n=time/delt;                                                     %循环次数
disp=zeros(n,3);                                   %设定n行3列存储加速度矩阵
minv=inv(m+delt*c/2+delt^2*k/6);
i=1;
for t=0:delt:time
%     f=[6*sin(3.5*t) -2*cos(2*t) 1.5*sin(1.5*t)]';
    f=[0 0 0]';
    if t==0
        a0=inv(m)*(f-k*x0-c*v0);                            %计算初始加速度
    else
        a=minv*(f-c*(v0+delt/2*a0)-k*(x0+delt*v0+delt^2*a0/3));%计算加速度
        v=v0+delt*(a0+a)/2;                                    %计算速度
        x=x0+delt*v0+delt^2/3*a0+delt^2/6*a;                     %计算位移
        a0=a;v0=v;x0=x;i=i+1;
    end
    disp(i,:)=a0;                                   %3个自由度的加速度矩阵

end
t=0:delt:time;
figure
% plot(t,disp(:,1),t,disp(:,2),t,disp(:,3));
plot(t,disp(:,1));    %三个自由度方向上加速度仿真曲线
grid on ;
xlabel('时间(s)'),title('3自由度时程曲线');



A=disp(:,1);                                   %第一自由度方向的加速度向量
M=length(A);
n=0:M-1;
figure
plot((0:M-1)*fs/M,20*log10(abs(fft(disp(:,1)))));
grid;



仿真的图为

QQ图片20170603221536.png
回复
分享到:

使用道具 举报

发表于 2017-6-5 09:08 | 显示全部楼层
是自由响应?其它点的频谱呢?
发表于 2017-6-5 10:48 | 显示全部楼层
数值好像也不对啊
 楼主| 发表于 2017-6-5 11:19 | 显示全部楼层
mni987654321 发表于 2017-6-5 09:08
是自由响应?其它点的频谱呢?

嗯,是自由响应,我这里把阻尼和外力都设为了0

点评

阻尼为零的话,响应还能是自由响应吗?  详情 回复 发表于 2017-6-6 08:45
 楼主| 发表于 2017-6-5 11:20 | 显示全部楼层
Agoni 发表于 2017-6-5 10:48
数值好像也不对啊

大侠,哪里数值不对呀?
发表于 2017-6-6 08:45 | 显示全部楼层
liuds123 发表于 2017-6-5 11:19
嗯,是自由响应,我这里把阻尼和外力都设为了0

阻尼为零的话,响应还能是自由响应吗?
发表于 2017-6-6 09:05 | 显示全部楼层
fft.jpg

把激励变为非零,阻尼要有,然后响应就正常了,上图是响应的fft,固有频率还是很清楚的

评分

1

查看全部评分

 楼主| 发表于 2017-6-6 09:21 | 显示全部楼层
mni987654321 发表于 2017-6-6 09:05
把激励变为非零,阻尼要有,然后响应就正常了,上图是响应的fft,固有频率还是很清楚的

能不能把你改的程序发给我看看呀?
 楼主| 发表于 2017-6-6 09:27 | 显示全部楼层
mni987654321 发表于 2017-6-6 09:05
把激励变为非零,阻尼要有,然后响应就正常了,上图是响应的fft,固有频率还是很清楚的

大侠,能不能看看你改过的程序呀?
发表于 2017-6-6 20:03 | 显示全部楼层

很简单,把激振力改为非零,阻尼也改为非零,就行了,没有别的改动。就是改为冲击响应了。

点评

激振力是哪行代码?  详情 回复 发表于 2017-6-7 14:36
发表于 2017-6-7 14:36 | 显示全部楼层
mni987654321 发表于 2017-6-6 20:03
很简单,把激振力改为非零,阻尼也改为非零,就行了,没有别的改动。就是改为冲击响应了。

激振力是哪行代码?

点评

把箭头指的那行删掉,用它上面那行就可以了  详情 回复 发表于 2017-6-8 08:45
发表于 2017-6-8 08:45 | 显示全部楼层
Eminem 发表于 2017-6-7 14:36
激振力是哪行代码?

把箭头指的那行删掉,用它上面那行就可以了
3.jpg
4.jpg
 楼主| 发表于 2017-6-12 12:57 | 显示全部楼层
mni987654321 发表于 2017-6-6 20:03
很简单,把激振力改为非零,阻尼也改为非零,就行了,没有别的改动。就是改为冲击响应了。

大侠,能不能把具体改的地方发给我学习一下,刚学,不怎么懂
发表于 2017-6-12 20:05 | 显示全部楼层
你选定的自由度,在某阶模态上如果正好是“节点”,那么该自由度对应的响应中是不能反映这阶模态的~
 楼主| 发表于 2017-8-7 23:21 | 显示全部楼层
mni987654321 发表于 2017-6-6 20:03
很简单,把激振力改为非零,阻尼也改为非零,就行了,没有别的改动。就是改为冲击响应了。

帅哥,冲击响应是怎么改的呀?在程序里改什么地方呀?能不能指导一下,一直不知道怎么弄
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-10 16:09 , Processed in 0.094559 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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