如何用matlab求解系统的固有频率和振型

如何用matlab求解系统的固有频率和振型,第1张

你的程序中,V的列向量是振动的固有模态,每个元素属于不同的自由度,因为你取了9个,所以添加横坐标就可以了,我觉得直接用x=1:9就行,能表示出趋势就可以 for j=1:9; plot(x,V(:,j)); hold on; end;

你好

你也不提前告诉我,你用的newmark算法,我之前都没有接触过。只好百度先学这个算法,到很晚才给你调试完成,并与精确解进行了对比如下图。

根据算法,给你的程序进行了对应的修改,主要有以下4点错误。

你的质量矩阵输入错误

初始速度没有加入

不同时刻的载荷程序错误

没有加速度的迭代方程

修改后程序如下:

clear;clc;

K=[6,-5;-5,5];

M=[1,0;0 1];%质量矩阵不能有错误

C=[2,-1;-1,1];

dt=pi/10;% dt ----- 时间步长

tend=10pi;% tend --- 结束时间

% [n,n] = size( K ) ;

%Newmark算法

gama = 05 ;

beta = 025 ;

[n,m] = size( K ) ;

Nalpha0 = 1/beta/dt^2 ;

Nalpha1 = gama/beta/dt ;

Nalpha2 = 1/beta/dt ;

Nalpha3 = 1/2/beta - 1 ;

Nalpha4 = gama/beta - 1 ;

Nalpha5 = dt/2(gama/beta-2) ;

Nalpha6 = dt(1-gama) ;

Nalpha7 = gamadt ;

NK1 = K + Nalpha0M + Nalpha1C ;

Nd = zeros( n, floor(tend/dt) + 1 ) ;

Nv = zeros( n, floor(tend/dt) + 1 ) ;

Na = zeros( n, floor(tend/dt) + 1 ) ;

f = zeros( n, floor(tend/dt) + 1 ) ;

Nd(1,1) = -7/15 ; %初始位

Nd(2,1)=-3/5;

Nv(1,1) = -3/5;%速度初始值不能少

Nv(2,1) = -8/15;%

f(:,1) =0;%初始载荷

Na(:,1) = 0; %初始加速度

t=0:dt:tend;

for i=2:1:length(t)

f(:,i)=[0 ;sin(t(i))];%不同时刻的载荷

f2 = f(:,i) + M(Nalpha0Nd(:,i-1)+Nalpha2Nv(:,i-1)+Nalpha3Na(:,i-1))+ C(Nalpha1Nd(:,i-1)+Nalpha4Nv(:,i-1)+Nalpha5Na(:,i-1)) ;

Nd(:,i) = inv(NK1)f2 ;

Na(:,i)=Nalpha0(Nd(:,i)-Nd(:,i-1))-Nalpha2Nv(:,i-1)-Nalpha3Na(:,i-1);%加速度不能少

Nv(:,i) = Nv(:,i-1) + Nalpha6Na(:,i-1) + Nalpha7Na(:,i) ;

end

% disp(Nd);

XX=-1/15[9;8]sin(t)-1/15[7;9]cos(t);

plot(t,Nd(1,:),t,XX(1,:),'--')

hold on

plot(t,Nd(2,:),'k',t,XX(2,:),'k--')

legend('X1算法值','X1精确解','X2算法值','X2精确解');

对比结果如下:

希望对你有帮助

% 将以下程序copy到matlab编辑器中运行,或直接在工作区运行即可

fs = 20e3; % 采样频率

fn = 3e3; % 固有频率

y0 = 5; % 位移常数

g = 01; % 阻尼系数

T = 001; % 重复周期

N = 4096; % 采样点数

NT = round(fsT); % 单周期采样点数

t = 0:1/fs:(N-1)/fs; % 采样时刻

t0 = 0:1/fs:(NT-1)/fs; % 单周期采样时刻

K = ceil(N/NT)+1; % 重复次数

y = [];

for i = 1:K

y = [y,y0exp(-g2pifnt0)sin(2pifnsqrt(1-g^2)t0)];

end

y = y(1:N);

Yf = fft(y); % 频谱

figure(1)

plot(t,y);

axis([0,inf,-4,5])

title('轴承故障仿真信号时域波形图')

xlabel('Time(s)')

ylabel('Amplitude')

figure(2)

f = 0:fs/N:fs-fs/N;

plot(f/1e3,abs(Yf));

xlabel('Frequency(KHz)');

ylabel('\itY\rm(\itf\rm)')

title('轴承故障仿真信号幅度谱图')

以上就是关于如何用matlab求解系统的固有频率和振型全部的内容,包括:如何用matlab求解系统的固有频率和振型、求matlab大神指教,如下方程(图片中间的振动方程),怎么用newmark法编程呀、使用matlab对故障轴承振动信号去噪等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9468892.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存