从你的程序中,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对故障轴承振动信号去噪等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)