|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
请问用Newmark算出的位移响应(对一多自由度系统),经FFT变换后,求出的频率与理论计算的不一致,是什么原因?以下的是我的程序
%Newmark算法
clear;clc;
m1 = 1; m2 = 1;m3 = 1;
k1 = 1000; k2 = 1000; k3 = 1000;
c1 = 0.01; c2 = 0.01; c3 = 0.01;
M = [m1 0 0;0 m2 0;0 0 m3];
C = [0 0 0;0 0 0;0 0 0];
K = [k1+k2 -k2 0;-k2 k2+k3 -k3;0 -k3 k3+k3];%参数
[n,m] = size(K);
dt = 1/20;%步长
tend = 100;%仿真时间
gama = 0.5;
beta = 0.25;
Nalpha0 = 1/beta/(dt^2);%A1
Nalpha1 = gama/beta/dt; %A2
Nalpha2 = 1/beta/dt; %A3
Nalpha3 = 1/2/beta - 1; %A4
Nalpha4 = gama/beta - 1; %A6
Nalpha5 = dt/2*(gama/beta-2); %A5
Nalpha6 = dt*(1-gama);
Nalpha7 = gama*dt;
NK1 = K + Nalpha0*M + Nalpha1*C;%有效刚度
Nd = zeros( n, tend/dt + 1 );%位移
Nv = zeros( n, tend/dt + 1 );%速度
Na = zeros( n, tend/dt + 1 );%加速度
f = zeros( n, tend/dt + 1 );%载荷
Nd(1,1) = 0; %初始位移值
Nd(2,1) = 0;
Nd(3,1) = 0;
Nv(1,1) = 0;%速度初始值
Nv(2,1) = 0;
Nv(3,1) = 0;
Na(1,1) = 0; %初始加速度
Na(2,1) = 0;
Na(3,1) = 0;
f(:,1) = [0;0;0];%初始载荷
t = 0 : dt : tend;
% y = unifrnd(-1,1,1,length(t));
y = randn(length(t),1);
for i = 2 : 1 : length(t)
f(:,i)=[y(i);0;0];%不同时刻的载荷
f2 = f(:,i) + M*(Nalpha0*Nd(:,i-1)+Nalpha2*Nv(:,i-1)+Nalpha3*Na(:,i-1))+ C*(Nalpha1*Nd(:,i-1)+Nalpha4*Nv(:,i-1)+Nalpha5*Na(:,i-1)); %有效载荷
Nd(:,i) = inv(NK1)*f2; %求位移
Na(:,i)=Nalpha0*(Nd(:,i)-Nd(:,i-1))-Nalpha2*Nv(:,i-1)-Nalpha3*Na(:,i-1);%求加速度
Nv(:,i) = Nv(:,i-1) + Nalpha6*Na(:,i-1) + Nalpha7*Na(:,i);%求速度
end
|
|